【发布时间】:2017-12-10 00:45:46
【问题描述】:
给定以下组件:
@Component({
selector: 'compA',
template: template: `<compB [item]=item></compB>`
})
export class CompA {
item:any;
updateItem():void {
item[name] = "updated name";
}
}
@Component({
selector: 'compB',
template: template: `<p>{{item[name]}}</p>`
})
export class CompB implements OnInit{
@Input() item: any;
someArray: any[];
ngOnInit():void {
someArray.push("something");
}
}
据我了解,除非更改完整的 item 对象,否则 angular2 无法识别 item 上的更改。因此,我想在调用updateItem 方法时为item 手动发出更改事件。然后,重新渲染子组件,即CompB,就好像 Angular 以常规方式检测到变化一样。
目前,我所做的是实现CompB 的ngOnInit 方法,并通过ViewChild 链接在updateItem 方法中调用该方法。故事的另一部分是我的实际来源有像someArray 这样的对象,我想在每次渲染中重置它们。我不确定重新渲染是否会重置someArray。目前,我正在ngOnInit 方法中重置它们。
所以,我的问题是:如何触发对父对象的更深元素的更改进行重新渲染?
谢谢
【问题讨论】:
-
@jonrsharpe ,我不想触发更改检测过程,我希望 Angular 能够识别更改,但其内置的更改识别机制无法检测到...
-
@suat,检测到,见my answer。我添加了一些说明
标签: angular typescript angular2-template angular2-directives