我用角4建立顯示的書籍標題,描述的列表,像下面的評級爲心中的應用程序:角:ngFor未更新的新項目
<h2>{{book.title}} <small *ngFor="let h of hearts">❤</small></h2>
爲了讓心中的權數我創造了這個吸
get hearts() {
if (this.book.rating < 0) {
return new Array(0);
}
return new Array(this.book.rating);
}
對於初始帳套這工作得很好。但是,當我將一個新項目添加到書籍陣列時,只顯示一個心臟。然而所有其他屬性都設置正確。只要我改變了一些東西,心也會更新並正確顯示。
任何猜測我在做什麼錯?
你的代碼效率很低。每次運行變更檢測時,都會調用綁定到組件模板中的方法或getter。如果它返回一個新的對象實例(在你的案例中是數組實例),Angular會得到這樣的印象:值永遠不會改變。這甚至應該導致像「表達已經改變......」的錯誤,並且你的應用程序的性能會很糟糕。相反,將getter的結果分配給一個字段並綁定到這些字段以避免此問題,並且只在數組內容實際發生更改後才更新該字段。 –
它看起來像變化檢測問題。你正在使用什麼變化檢測策略。您可以手動進行推送,也可以添加'private changeDetectorRef:ChangeDetectorRef',然後添加'this.changeDetectorRef.markForCheck();'您需要它的地方 –