我已经在使用不可变数据进行OnPush变更检测.我想知道我可以通过使用ngZone.runOutsideAngular进行更改检测吗?我只是在这里寻找一些指导方针.
它们并不特别相关.OnPush控制更改每个组件级别的检测,而ngZone"排序"触发器更改整个应用程序的检测.
Angular使用区域,特别NgZone是在没有任何更多任务时通知.在区域中安排的任务将在此区域中执行.所以所有异步任务setTimeout都在里面执行NgZone.将ngZone.runOutsideAngular允许您安排之外的任务ngZone,这意味着一旦完成角将不会收到通知并没有变化检测会发生.
如果您有一些重复执行的异步任务,每秒执行多次(如mousemove事件),那么您可以利用它ngZone.runOutsideAngular来避免触发每个事件的更改检测.然后,您可以每秒安排一次手动更改检测.除此之外,我无法想到它如何帮助您优化应用程序.