如何仅针对特定事件在angular中应用onPush更改检测

如何仅针对特定事件在angular中应用onPush更改检测,angular,angular-changedetection,Angular,Angular Changedetection,我正在开发一个应用程序,该应用程序已经使用默认的角度变化检测进行开发,我们面临着速度缓慢的问题。我尝试使用onPush变更检测,它带来了大量的启动性能,但它需要大量的变更 因此,我尝试使用ChangeDetectorRef的detach()在单击按钮时将我的组件从更改检测中分离出来,然后在处理完成后重新连接它,以便可以执行角度更改检测。但是,它没有给任何性能改进 是否有其他方法可以复制onPush更改检测中发生的情况,只需单击按钮,当事件处理程序完成执行时,我们就可以将更改检测策略更改回默认值

我正在开发一个应用程序,该应用程序已经使用默认的角度变化检测进行开发,我们面临着速度缓慢的问题。我尝试使用onPush变更检测,它带来了大量的启动性能,但它需要大量的变更

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

是否有其他方法可以复制onPush更改检测中发生的情况,只需单击按钮,当事件处理程序完成执行时,我们就可以将更改检测策略更改回默认值


提前感谢。

不确定,但可能值得一看ngZone.runOutsideAngular()。这是一种逃避Angular的变化检测的方法,无需分离变化检测器。 例如:

 constructor(private zone: NgZone) {}

    this.zone.runOutsideAngular(() => {
        this.document.addEventListener(
            'click',
            this.onDocumentClick.bind(this)
        );
    });
希望它能帮助你