我们的应用程序使用我们正在使用的套接字,socket.io
并且它的事件是用 Observables 包装的。
在我们应用程序的一个区域中,我们有一个每 10 秒更新一次的图表。该图是用D3
绘制的,直接绘制而不使用angular。
我们希望完全禁用图形区域的更改检测,并确保每个套接字响应(Observable)不会在应用程序树的任何地方触发更改检测。
我们尝试使用zone.runOutsideAngular
,但我们必须将它放在我们订阅包装的 Observable 的较低套接字层socket.io
......虽然这有效,但它运行 Angular 之外的所有套接字事件。我们只需要在角度区域之外运行图形事件。
理想情况下,我们需要在组件级别使用区域或其他东西,并且仅用于图形,因为应用程序的其他区域确实需要从套接字事件进行更改检测......
据我了解,任何异步操作(例如套接字事件)都会触发更改检测。
我们可以在更高级别禁用此功能而不必触及较低级别的服务吗?
在 angular 区域之外运行特定 socket.io 事件以避免整个应用程序中的更改检测的最佳方法是什么?
任何见解将不胜感激。