【问题标题】:How to apply onPush change detection in angular just for a particular event如何仅针对特定事件以角度应用 onPush 更改检测
【发布时间】:2020-02-07 02:50:57
【问题描述】:
我正在开发一个已经使用默认角度变化检测开发的应用程序,我们正面临速度缓慢的问题。我尝试使用 onPush 更改检测,它带来了很多启动性能,但它需要很多更改。
所以,我尝试使用 ChangeDetectorRef 的 detach() 将我的组件与单击按钮的更改检测分离,并在处理完成后重新附加它,以便可以执行角度变化检测。但是,它并没有带来任何性能提升。
是否有任何其他方法可以复制 onPush 更改检测中发生的情况,点击按钮,当事件处理程序完成执行时,我们将更改检测策略更改回默认值?
提前致谢。
【问题讨论】:
标签:
angular
angular-changedetection
【解决方案1】:
不确定,但可能值得关注 ngZone.runOutsideAngular ()。这是一种逃避 Angular 变更检测的方法,无需分离变更检测器。
例如:
constructor(private zone: NgZone) {}
this.zone.runOutsideAngular(() => {
this.document.addEventListener(
'click',
this.onDocumentClick.bind(this)
);
});
希望对你有帮助!