角度NgZone.runOutsideAngular和OnPush变化检测策略

角度NgZone.runOutsideAngular和OnPush变化检测策略,angular,angular2-changedetection,Angular,Angular2 Changedetection,我试图优化angular应用程序中代码的性能 我知道我可以runOutsideAngular一些代码,以避免在每次代码运行或事件中检测到更改 但是,当我使用OnPush更改检测策略时,是否需要使用runOutsideAngular?(对于听众等)我想我现在有了答案 在我看来,这取决于应用程序的外观 如果它有很多未优化的组件,并且异步操作将触发很多次,或者它是一个事件侦听器,那么它必须在runOutsideAngular 但是,如果一个应用程序主要是由采用OnPush策略的组件构建的,或者仅仅

我试图优化angular应用程序中代码的性能

我知道我可以
runOutsideAngular
一些代码,以避免在每次代码运行或事件中检测到更改


但是,当我使用
OnPush
更改检测策略时,是否需要使用
runOutsideAngular
?(对于听众等)我想我现在有了答案

在我看来,这取决于应用程序的外观

  • 如果它有很多未优化的组件,并且异步操作将触发很多次,或者它是一个事件侦听器,那么它必须在
    runOutsideAngular

  • 但是,如果一个应用程序主要是由采用
    OnPush
    策略的组件构建的,或者仅仅是
    AppComponent
    使用
    OnPush
    (因为整个树将要使用
    OnPush
    策略,在顶层组件上定义它将不可逆地为整个应用程序定义此策略)然后,您可以省略使用
    runOutsideAngular
    ,因为用于更改检测的触发器不会影响任何内容


另外,我认为完全
OnPush
优化的应用程序有一个选项,可以禁用区域中的所有事件补丁,因此不需要
runOutsideAngular
,因为所有异步事件都没有触发NgZone的点。

您有什么决定吗?“我也对它感兴趣……”dark19补充了我的想法作为回答