我发现了一些关于变更检测的性能问题,所以我从过去几周开始使用onPush。 到现在为止一切都很好,但我不觉得它在P芯片上的表现有什么奇怪的地方,因为它只在第二次点击时工作
Stackblitz工作示例在此处输入链接描述
在stackblitz中,您可以在第一次点击detectChanges时看到名称更改,但这不是p-chips的场景。。。 有人能帮我吗?)
我尝试使用settimeout来检查它是否正在刷新总视图,但是settimeout也没有更新视图
您可以在EmptyArray
函数中使用setTimeout(()=>this._cdref.detectChanges(),0);
。 它使用区域并检测之后的更改。
我相信这个问题的陈述会有所帮助。
对于onPush
检测策略,我找不到发生这种情况的原因,但是在队列中发送detectchanges()
回调(使其异步)将解决您的问题。
您可以通过在SetTimeout
调用中调用方法来完成此操作:
setTimeout(() => this._cdRef.detectChanges(), 0);
请查看stackblitz演示。