首页 > 解决方案 > Angular NgZone.runOutsideAngular 和 OnPush 变化检测策略

问题描述

我正在尝试优化角度应用程序中代码的性能。

我知道我可以runOutsideAngular编写一些代码,以免对每个代码运行或事件进行更改检测。

但是,我在使用变更检测策略runOutsideAngular时是否需要使用?OnPush(对于听众等)

标签: angularangular2-changedetection

解决方案


我想我现在有了答案。

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

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

  • 但是,如果应用程序主要由具有OnPush策略的组件构建或仅AppComponent使用OnPush(因为整个树将使用OnPush在顶级组件上定义它的策略,不可逆地为整个应用程序定义此策略),那么您可以省略 using runOutsideAngularas triggers for change检测不会影响任何事情

此外,我认为完全OnPush优化的应用程序可以选择禁用 Zone 中的所有事件补丁,因此不需要,runOutsideAngular因为所有异步事件都没有触发 NgZone 的意义。


推荐阅读