Угловой 4: зоны розеток и обнаружение изменений

Наше приложение использует сокеты, мы используем socket.io и его события завернуты в Observables.

В одной области нашего приложения у нас есть график, который обновляется каждую десятую секунды. График нарисован с D3 и рисует напрямую, без использования угловых.

Мы хотели бы полностью отключить обнаружение изменений для области графика и убедиться, что каждый ответ сокета (наблюдаемый) не вызывает обнаружение изменений где-либо в дереве приложения.

Мы пытались использовать zone.runOutsideAngular, но мы должны были поместить его в нижний слой сокета, где мы подписываемся на Observable, который переносит socket.io... Хотя это сработало, он запускает ВСЕ события сокетов вне угловых. Нам нужно запускать только графические события вне зоны angular.

В идеале нам нужно использовать зоны или что-то еще на уровне компонентов и только для графиков, потому что другие области приложения требуют обнаружения изменений по событиям сокетов...

Насколько я понимаю, любые асинхронные операции, такие как события сокетов, будут инициировать обнаружение изменений.

Можем ли мы отключить это на более высоком уровне, не касаясь услуг более низкого уровня?

Каков наилучший подход для запуска определенных событий socket.io вне зоны angular, чтобы избежать обнаружения изменений во всем приложении?

Любое понимание будет с благодарностью.

0 ответов

Другие вопросы по тегам