如何仅针对特定事件在角度中应用onPush变化检测

时间:2019-10-09 17:53:41

标签: angular angular-changedetection

我正在开发一个已经通过使用默认的角度变化检测开发的应用程序,我们正面临速度慢的问题。我尝试使用onPush更改检测功能,虽然可以带来很多启动性能,但是需要进行很多更改。

因此,我尝试使用ChangeDetectorRef的detach()来将我的组件从单击按钮的更改检测中分离出来,并在完成处理后重新附加它,以便可以执行角度更改检测。但是,它并没有提高任何性能。

是否还有其他方法可以通过单击按钮来复制onPush更改检测中发生的事件,并且当事件处理程序完成执行时,然后将更改检测策略更改回默认值吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

不确定,但值得一看的是ngZone.runOutsideAngular()。这是逃脱Angular变更检测的一种方式,而无需拆卸变更检测器。 例如:

 constructor(private zone: NgZone) {}

    this.zone.runOutsideAngular(() => {
        this.document.addEventListener(
            'click',
            this.onDocumentClick.bind(this)
        );
    });

希望对您有帮助!