提问者:小点点

changeDetection onPush仅在第二次单击时触发


我发现了一些关于变更检测的性能问题,所以我从过去几周开始使用onPush。 到现在为止一切都很好,但我不觉得它在P芯片上的表现有什么奇怪的地方,因为它只在第二次点击时工作

Stackblitz工作示例在此处输入链接描述

在stackblitz中,您可以在第一次点击detectChanges时看到名称更改,但这不是p-chips的场景。。。 有人能帮我吗?)

我尝试使用settimeout来检查它是否正在刷新总视图,但是settimeout也没有更新视图


共2个答案

匿名用户

您可以在EmptyArray函数中使用setTimeout(()=>this._cdref.detectChanges(),0);。 它使用区域并检测之后的更改。

匿名用户

我相信这个问题的陈述会有所帮助。

对于onPush检测策略,我找不到发生这种情况的原因,但是在队列中发送detectchanges()回调(使其异步)将解决您的问题。

您可以通过在SetTimeout调用中调用方法来完成此操作:

setTimeout(() => this._cdRef.detectChanges(), 0);

请查看stackblitz演示。