簡體   English   中英

Angular2無法檢測到數組中的更改

[英]Angular2 doesn't detect changes in Array

我在一個Ionic2 / Angular2項目上。 那里我有一個

*ngFor="let item of items | async | customPipe"

在我的代碼中。 異步是因為items是一個Observable<Item[]> 我的customPipe在第一次運行時運行良好。 但是當我對任何一項進行更改時,如果仍然可以顯示通過我的customPipe過濾掉它的項目。

有什么問題? *ngFor僅運行一次嗎? 還是我必須強制進行DOM更新? 謝謝你的幫助。

根據Angular2管道文檔:

Angular僅在檢測到輸入值的純變化時才執行純管道。 純粹的更改要么是對原始輸入值的更改(字符串,數字,布爾值,符號),要么是更改的對象引用(日期,數組,函數,對象)。

Angular忽略(復合)對象內的更改。 如果我們更改輸入月份,添加到輸入數組或更新輸入對象屬性,它將不會調用純管道。

原因

這似乎很嚴格,但速度很快。 對象引用檢查很快-比進行深度檢查要快得多-因此Angular可以快速確定是否可以跳過管道執行和視圖更新。

因此,當您更改數組或數組中的元素時,數組引用不會更改。

因此,切換到.onPush或手動觸發更改檢測可能會解決您的問題。

來源: https : //angular.io/docs/ts/latest/guide/pipes.html#!#pure-and-impure-pipes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM