2017-07-21 40 views
4

我有一個對象數組(我們稱之爲arr)。在我的組件的(change)方法中的一個輸入中,我修改了其中一個對象的屬性,但在視圖(*ngFor)中沒有任何更改。我讀了Angular2變化檢測不檢查數組或對象的內容,所以我嘗試了這些:Angular2:* ngFor當陣列更新時不更新

this.arr = this.arr.slice(); 

this.arr = [..this.arr]; 

但有一種觀點並沒有改變,它仍然顯示舊屬性。在(change)方法console.log()我得到了正確的數組。奇怪的,但這個工程:this.arr = []; 我也試過NgZonemarkForCheck()

回答

1

嘗試做

this.arr = Object.assign({}, NEW_VALUE); 
1
  1. 檢查您的組件配置changeDetection產生了深刻的副本:cHangeDetectionStrategy.OnPush,如果你要這則數組的更新用後你必須調用changeDetectorRef.markForCheck ()
  2. 您還可以實現onChange生命週期掛鉤並更改此函數內數組的值。