我不明白,在其宗旨子组件在角2Angular 2 - 数据更改后子组件被破坏,为什么?
被破坏掉了下面的话:
我有父母和孩子组成部分:
parent.component.html
<div class="parent-content" (click)="toggleChild()">
// ...
</div>
<child></child>
通过点击儿童将被切换内容(子组件将通过动画显示)
个parent.component.ts
在这里,我订阅我的父sharedService数据的变化......
ngOnInit() {
let subscription = this.sharedService.myData.subscribe((data) => {
this.data = data;
});
}
..以及在我的孩子(acually孩子包装器动态创建的组件,因此要准确 - 我用我的盛大的孩子sharedService)
child.component.ts
this.resolver.resolveComponent(component).then(factory => {
let componentRef = this.childContainer.createComponent(factory);
});
盛大child.component.ts
ngOnInit() {
let subscription = this.sharedService.myData.subscribe((data) => {
this.data = data;
});
}
现在,当myData的变化(由于服务器响应)的孩子被破坏了! 我失去了所有的大孩子的数据,因为它也被摧毁了!
我读到有关组件交互here,但还是无法弄清楚究竟何时会ngOnDestroy叫,因为我没有任何@Inputs做...
也许我可以存储盛大孩子操纵数据在其他地方被破坏之前,但重点是,我需要此视图保持开放和获取myData更新为父母和孙子。谢谢你的帮助!
UPDATE
我发现它其实并不重要,孩子(大独生子女)股数据,但造成破坏父数据的纯粹的变化(或重新初始化,因为在子组件之后再次调用子构造函数)。这个问题如何解决?
'* ngIf','* ngFor',路线变化 –
那么这个问题的正确方法是什么?请看看上面的更新。 – mrpool89
对不起,没有足够的信息来查看正在发生的事情。我看到你动态地创建组件,但是从你的问题中的代码,我不可能看到事物是如何连接的。 –