我有一个名为'data'的对象的父组件,其中包含一些我想要在UI上显示的数据。数据显示在一个表格中,并且我创建了一个包含该表格的子组件。因此,在调用表组件时,我将数据作为@Input()传递。将数据推送到输入()未检测到:角4
//父componene模板
<display-data [data]='data'></display-data>
上显示的顶部,我在修改该数据属性我父组件两种方法。其中一个是重新分配数据阵列是这样的:
setNewData() {
this.data = this.response.content;
}
和其他方法推新数据已经存在的数据:
addNewData(newData: Array) {
this.data.push(...newData);
}
因为我采用了棱角分明的输入()我假设无论何时我修改父组件中的数据对象(重新赋值或添加更多数据),子组件中的数据属性都会立即更新,我将在UI上看到新数据。这按预期工作。 但是,当我试着看Angular的生命周期钩子'ngOnChanges'时,我注意到它只在重新分配时才被调用,而不是当我在数据对象中推入一些新数据时。
这是如何ngOnChanges的作品?因为我想在子组件中的数据发生更改时调用方法。
另一种方法是将源数组中的每个项目传递给单个组件@Input()以跟踪每个项目的更改。而不是整个阵列。 –