在子节点上未检测到@Input数组的更改

时间:2017-12-06 14:54:58

标签: angular typescript

我有以下angular2父级:

ParentComponent {

   some_array : Array;

   (...)

}

它的孩子:

ChildComponent {

     selector: "child"
     @Input some_object : Object;

}

我的布局如下,来自Parent组件:

<ng-container *ngFor="let object of some_array">
     <child [some_object]="object></child>
</ng-container>

和儿童布局:

<Text [text]="some_object.text"/>

相应地呈现视图并完美运行

但是,当我通过带有[i] ndex的for循环更改父元素中some_array内的对象属性时,子元素没有任何变化,我需要检测这些变化。

我怎么能这样做?

非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

只要您实际上没有选择OnPush作为ChangeDetectionStrategy或完全与ChangeDetection分离,那么更改应该在您的孩子中复制。

但是,如果您质疑通常如何对数据绑定属性的更改做出反应,那么就会有OnChanges生命周期钩子。

export class ChildComponent implements OnChanges {

   ngOnChanges(changes: SimpleChanges) {

     if (changes['some_object']) {
       //
       // react to changes in general
       // or access changes['some_object'].currentValue
       // or changes['some_object'].previousValue
       // ...
     }
   }
}

希望这有助于解决您的问题!