-
Notifications
You must be signed in to change notification settings - Fork 27.1k
Closed
Description
I am getting the below error when doing a bunch of changes while using trackBy. It appears to happen whenever I have outstanding changes and swap put the source array of the ngFor.
EXCEPTION: TypeError: Cannot read property 'ref' of undefined in [tasks in TaskListComponent@3:12]
browser_adapter.js:81 EXCEPTION: TypeError: Cannot read property 'ref' of undefined in [tasks in TaskListComponent@3:12]BrowserDomAdapter.logError @ browser_adapter.js:81BrowserDomAdapter.logGroup @ browser_adapter.js:92ExceptionHandler.call @ exception_handler.js:53(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82(anonymous function) @ ng_zone.js:174NgZone.run @ ng_zone.js:137(anonymous function) @ application_ref.js:265schedulerFn @ async.js:112SafeSubscriber.__tryOrUnsub @ Subscriber.js:163SafeSubscriber.next @ Subscriber.js:118Subscriber._next @ Subscriber.js:78Subscriber.next @ Subscriber.js:55Subject._finalNext @ Subject.js:124Subject._next @ Subject.js:116Subject.next @ Subject.js:75EventEmitter.emit @ async.js:93(anonymous function) @ ng_zone.js:68Zone.run @ core.js:79NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 ORIGINAL EXCEPTION: TypeError: Cannot read property 'ref' of undefinedBrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:62(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82(anonymous function) @ ng_zone.js:174NgZone.run @ ng_zone.js:137(anonymous function) @ application_ref.js:265schedulerFn @ async.js:112SafeSubscriber.__tryOrUnsub @ Subscriber.js:163SafeSubscriber.next @ Subscriber.js:118Subscriber._next @ Subscriber.js:78Subscriber.next @ Subscriber.js:55Subject._finalNext @ Subject.js:124Subject._next @ Subject.js:116Subject.next @ Subject.js:75EventEmitter.emit @ async.js:93(anonymous function) @ ng_zone.js:68Zone.run @ core.js:79NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 ORIGINAL STACKTRACE:BrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:65(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82(anonymous function) @ ng_zone.js:174NgZone.run @ ng_zone.js:137(anonymous function) @ application_ref.js:265schedulerFn @ async.js:112SafeSubscriber.__tryOrUnsub @ Subscriber.js:163SafeSubscriber.next @ Subscriber.js:118Subscriber._next @ Subscriber.js:78Subscriber.next @ Subscriber.js:55Subject._finalNext @ Subject.js:124Subject._next @ Subject.js:116Subject.next @ Subject.js:75EventEmitter.emit @ async.js:93(anonymous function) @ ng_zone.js:68Zone.run @ core.js:79NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 TypeError: Cannot read property 'ref' of undefined
at ViewContainerRef_.get (view_container_ref.js:47)
at ng_for.js:84
at DefaultIterableDiffer.forEachIdentityChange (default_iterable_differ.js:105)
at NgFor._applyChanges (ng_for.js:82)
at NgFor.ngDoCheck (ng_for.js:58)
at AbstractChangeDetector.ChangeDetector_TaskListComponent_1.detectChangesInRecordsInternal (viewFactory_TaskListComponent:207)
at AbstractChangeDetector.detectChangesInRecords (abstract_change_detector.js:105)
at AbstractChangeDetector.runDetectChanges (abstract_change_detector.js:88)
at AbstractChangeDetector._detectChangesContentChildren (abstract_change_detector.js:167)
at AbstractChangeDetector.runDetectChanges (abstract_change_detector.js:89)BrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:66(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82(anonymous function) @ ng_zone.js:174NgZone.run @ ng_zone.js:137(anonymous function) @ application_ref.js:265schedulerFn @ async.js:112SafeSubscriber.__tryOrUnsub @ Subscriber.js:163SafeSubscriber.next @ Subscriber.js:118Subscriber._next @ Subscriber.js:78Subscriber.next @ Subscriber.js:55Subject._finalNext @ Subject.js:124Subject._next @ Subject.js:116Subject.next @ Subject.js:75EventEmitter.emit @ async.js:93(anonymous function) @ ng_zone.js:68Zone.run @ core.js:79NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 ERROR CONTEXT:BrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:69(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82(anonymous function) @ ng_zone.js:174NgZone.run @ ng_zone.js:137(anonymous function) @ application_ref.js:265schedulerFn @ async.js:112SafeSubscriber.__tryOrUnsub @ Subscriber.js:163SafeSubscriber.next @ Subscriber.js:118Subscriber._next @ Subscriber.js:78Subscriber.next @ Subscriber.js:55Subject._finalNext @ Subject.js:124Subject._next @ Subject.js:116Subject.next @ Subject.js:75EventEmitter.emit @ async.js:93(anonymous function) @ ng_zone.js:68Zone.run @ core.js:79NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 _Context {element: comment, componentElement: comment, context: TaskListComponent, locals: Object, injector: Injector…}BrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:70(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82(anonymous function) @ ng_zone.js:174NgZone.run @ ng_zone.js:137(anonymous function) @ application_ref.js:265schedulerFn @ async.js:112SafeSubscriber.__tryOrUnsub @ Subscriber.js:163SafeSubscriber.next @ Subscriber.js:118Subscriber._next @ Subscriber.js:78Subscriber.next @ Subscriber.js:55Subject._finalNext @ Subject.js:124Subject._next @ Subject.js:116Subject.next @ Subject.js:75EventEmitter.emit @ async.js:93(anonymous function) @ ng_zone.js:68Zone.run @ core.js:79NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:91 EXCEPTION: TypeError: Cannot read property 'ref' of undefined in [tasks in TaskListComponent@3:12]
browser_adapter.js:81 EXCEPTION: TypeError: Cannot read property 'ref' of undefined in [tasks in TaskListComponent@3:12]BrowserDomAdapter.logError @ browser_adapter.js:81BrowserDomAdapter.logGroup @ browser_adapter.js:92ExceptionHandler.call @ exception_handler.js:53(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 ORIGINAL EXCEPTION: TypeError: Cannot read property 'ref' of undefinedBrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:62(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 ORIGINAL STACKTRACE:BrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:65(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 TypeError: Cannot read property 'ref' of undefined
at ViewContainerRef_.get (view_container_ref.js:47)
at ng_for.js:84
at DefaultIterableDiffer.forEachIdentityChange (default_iterable_differ.js:105)
at NgFor._applyChanges (ng_for.js:82)
at NgFor.ngDoCheck (ng_for.js:58)
at AbstractChangeDetector.ChangeDetector_TaskListComponent_1.detectChangesInRecordsInternal (viewFactory_TaskListComponent:207)
at AbstractChangeDetector.detectChangesInRecords (abstract_change_detector.js:105)
at AbstractChangeDetector.runDetectChanges (abstract_change_detector.js:88)
at AbstractChangeDetector._detectChangesContentChildren (abstract_change_detector.js:167)
at AbstractChangeDetector.runDetectChanges (abstract_change_detector.js:89)BrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:66(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 ERROR CONTEXT:BrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:69(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
browser_adapter.js:81 _Context {element: comment, componentElement: comment, context: TaskListComponent, locals: Object, injector: Injector…}BrowserDomAdapter.logError @ browser_adapter.js:81ExceptionHandler.call @ exception_handler.js:70(anonymous function) @ application_ref.js:166NgZone._notifyOnError @ ng_zone.js:252collection_1.StringMapWrapper.merge.onError @ ng_zone.js:156Zone.run @ core.js:82NgZone._notifyOnTurnDone @ ng_zone.js:67(anonymous function) @ ng_zone.js:182arguments.(anonymous function) @ functions.js:30
exception_handler.js:74 Uncaught EXCEPTION: TypeError: Cannot read property 'ref' of undefined in [tasks in TaskListComponent@3:12]
ORIGINAL EXCEPTION: TypeError: Cannot read property 'ref' of undefined
ORIGINAL STACKTRACE:
TypeError: Cannot read property 'ref' of undefined
at ViewContainerRef_.get (http://tm.daptiv.com/main.js:46579:46)
at http://tm.daptiv.com/main.js:22571:44
at DefaultIterableDiffer.forEachIdentityChange (http://tm.daptiv.com/main.js:47130:9)
at NgFor._applyChanges (http://tm.daptiv.com/main.js:22570:15)
at NgFor.ngDoCheck (http://tm.daptiv.com/main.js:22545:16)
at AbstractChangeDetector.ChangeDetector_TaskListComponent_1.detectChangesInRecordsInternal (viewFactory_TaskListComponent:207:48)
at AbstractChangeDetector.detectChangesInRecords (http://tm.daptiv.com/main.js:51037:14)
at AbstractChangeDetector.runDetectChanges (http://tm.daptiv.com/main.js:51020:12)
at AbstractChangeDetector._detectChangesContentChildren (http://tm.daptiv.com/main.js:51099:14)
at AbstractChangeDetector.runDetectChanges (http://tm.daptiv.com/main.js:51021:12)
ERROR CONTEXT:
[object Object]
Offending Component implementation
@Component({
selector: 'task-list.block-component',
inputs: ['tasks'],
directives: [NgFor, NgIf, TaskItemComponent],
template: `
<div *ngIf="tasks.length > 0">
<task-item
*ngFor="var task of tasks; #i=index; trackBy:taskTrackBy"
[task]="task"
(taskFlagChanged)="taskFlagStateChanged(task, $event)"
(dragstart)="$event.dataTransfer.setData('task', task.id)"></task-item>
</div>
<div *ngIf="tasks.length === 0">No Tasks available.</div>
`
})
export class TaskListComponent {
constructor(private dispatcher: Dispatcher) {
}
taskTrackBy(index: number, task: Task) {
return task.id;
}
taskFlagStateChanged(task: Task, flagState: boolean) {
if (flagState) {
this.dispatcher.sendAction(TaskActions.Flag.create(task));
} else {
this.dispatcher.sendAction(TaskActions.Unflag.create(task));
}
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels