[英]Does `changeDetection: ChangeDetectionStrategy.OnPush` in angular2 only works in one direction: top->bottom?
[英]changeDetection onPush is triggering only on second click
我發現有關更改檢測的性能存在一些問題,因此我從過去幾周開始使用 onPush。 到目前為止一切都很好,但我不知道它對 p-chips 的行為很奇怪,它只能在第二次點擊時工作:(
Stackblitz 工作示例在此處輸入鏈接描述
在stackblitz中,您可以在第一次單擊detectChanges時看到名稱更改,但這不是p-chips的情況...有人可以幫我:)
嘗試使用 settimeout 只是為了檢查它是否刷新了總視圖,但 settimeout 也沒有更新視圖
我相信這個問題的陳述會有所幫助。
我找不到使用OnPush
檢測策略發生這種情況的原因,但是將您的detectChanges()
回調發送回隊列(使其異步)將解決您的問題。
您可以通過調用setTimeout
調用中的方法來做到這一點:
setTimeout(() => this._cdRef.detectChanges(), 0);
請查看stackblitz 演示。
您可以使用setTimeout(() => this._cdRef.detectChanges(), 0);
在您的emptyArray
function 中。 它使用區域並在它之后檢測更改。
嗨,伙計們,我嘗試了您所有的答案,甚至 settimeout 都不適合我。 我也不喜歡使用 settimeout,因為它確實會從應用程序組件級別更改檢測
這對我有用:)。 我真的不明白為什么 detectChanges 對所有 rest 都有效,並且僅對於這個 p 芯片,我需要在它工作之前添加 markForCheck。
this._cdRef.markForCheck();
this._cdRef.detectChanges();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.