ChangeDetectorRef.detectChanges
从NgZone.runOutsideAngular
上下文中调用可以吗?我有通过WebSocket
. Websocket 数据流非常密集,因此我将其包装成NgZone.runOutsideAngular
. 各种服务订阅 websocket 数据,对其进行处理并报告它们自己的事件 ( Observables
)。它们在角度区域外触发。Angular 组件订阅它们并在事件处理程序(观察者)中调用ChangeDetectorRef.detectChanges
. 在大多数情况下,这可以正常工作。但在某些情况下,它会导致麻烦:ngFor 可能会在角度区域之外创建新元素/组件。此类组件的事件处理程序将触发超大角度。我知道我可以将它们包装到NgZone.run
调用中,但这会导致我想要避免的全局变化检测。
UPDATE1:我创建示例来演示该问题:
https ://stackblitz.com/edit/angular-5-change-detection-in-runoutsideangular-context
添加一些项目,然后尝试使用x
按钮将其删除。