我有一個名爲'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()以跟蹤每個項目的更改。而不是整個陣列。 –