【发布时间】:2016-11-11 05:00:49
【问题描述】:
我使用 DoCheck 来检测从 ngFor 传递的输入属性中的重要更改。它工作正常。但是当我做了一些更改(从由 ngFor 迭代的数组中删除一项)时,我的子组件看不到任何更改并且不会重新渲染自身。
也许我做错了什么?
ngDoCheck() {
console.log('zz');
var changes = this._differ.diff(this.schedulerData);
console.log(changes);
if(changes) {
changes.forEachAddedItem(r => {
console.log(r);
if (r.key === 'tasks') this.launchScheduler();
});
}
}
ngOnInit() {
console.log(this.schedulerData);
} /* !ngOnInit */
ngOnChanges(changes: {[propertyName: string]: SimpleChange}) {
for (let propName in changes) {
if (propName === 'schedulerData') {
console.log(changes[propName]);
}
}
}
【问题讨论】:
-
是不是换数组的时候没有体现出来的问题?
-
是的。我有数组 - 项目并通过 *ngFor 对其进行迭代。在这个 ngFor 我有子组件(你可以在上面看到他的代码)并且它工作正常。但是当我更改这些项目的长度时,我没有像没有 DoCheck 那样正常重新渲染我的子组件(*ngFor 重新迭代正确)但是组件不启动他的 OnInit 等。我不明白为什么和我该如何与之抗争。
标签: typescript angular