【发布时间】:2018-02-04 23:36:24
【问题描述】:
我有一个父组件,其中包含一个名为“data”的对象,其中包含一些我想在 UI 上显示的数据。数据显示在一个表中,我创建了一个包含该表的子组件。所以在调用表格组件时,我将数据作为@Input() 传递。
//父组件模板
<display-data [data]='data'></display-data>
除了显示之外,我的父组件中有两个方法可以修改此数据属性。其中一个重新分配数据数组,如下所示:
setNewData() {
this.data = this.response.content;
}
另一种方法将新数据推送到现有数据:
addNewData(newData: Array) {
this.data.push(...newData);
}
因为我使用的是 Angular Input(),所以我假设每当我修改父组件中的数据对象(重新分配或添加更多数据)时,子组件中的数据属性将立即更新,并且我将在 UI 上看到新数据。这按预期工作。 但是,当我尝试查看 Angular 的生命周期钩子“ngOnChanges”时,我注意到它仅在发生重新分配时才被调用,而不是当我在数据对象中推送一些新数据时。
ngOnChanges 是这样工作的吗?因为我想在子组件的数据发生变化时调用一个方法。
【问题讨论】:
-
另一种方法是将源数组中的每个项目传递给单独的组件 @Input() 以跟踪每个项目的更改。而不是整个数组。
标签: angular