Можно ли вызывать ChangeDetectorRef.detectChanges
из NgZone.runOutsideAngular
контекста?У меня есть угловое приложение, которое получает данные через WebSocket
.Поток данных Websocket настолько интенсивен, что я обернул его в NgZone.runOutsideAngular
.Различные службы подписываются на данные websocket, обрабатывают их и сообщают о своих собственных событиях (Observables
).Они срабатывают за пределами угловой зоны.Угловые компоненты подписываются на них и в обработчиках событий (наблюдателях) вызывают ChangeDetectorRef.detectChanges
.В большинстве случаев это работает нормально.Но в некоторых случаях это вызывает проблемы: ngFor может создавать новые элементы / компоненты вне угловой зоны.Обработчики событий таких компонентов будут запускать угловые размеры.Я знаю, что могу обернуть их в NgZone.run
вызовы, но это приведет к обнаружению глобальных изменений, которых я хочу избежать.
ОБНОВЛЕНИЕ1: я создаю пример, чтобы продемонстрировать проблему: https://stackblitz.com/edit/angular-5-change-detection-in-runoutsideangular-context Добавьте некоторый элемент,затем попытайтесь удалить его, используя кнопку x
.