[英]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.