Вызовите ChangeDetectorRef.detectChanges из контекста runOutsideAngular.Это нормально? - PullRequest
0 голосов
/ 19 февраля 2019

Можно ли вызывать 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.

...