В угловом гибридном приложении как именно downgradeModule работает по отношению к угловой зоне? - PullRequest
2 голосов
/ 25 октября 2019

Меня больше всего интересует влияние этой строки в их документации :

В отличие от UpgradeModule, downgradeModule() не запускает основной модуль AngularJS внутри угловой зоны.

Означает ли это, что только начальный загрузчик приложения будет работать за пределами угловой зоны? Или же сервисы, фабрики и т. Д., Которые будут созданы, также будут работать за пределами угловой зоны?

Если это только начальный загрузчик, то как вы запускаете определенные части стороны AngularJS за пределами угловой зоны (главным образомпо соображениям производительности)?

Простой пример, который объясняет, почему я запутался, - это служба AngularJS, которая делает что-то вроде этого:

element.on('click', handlerFn);
function handlerFn () {
    scope.$apply(function () {
        // update some scope binding
    });
}

В этом примере обработчик кликов происходит снаружиОбнаружение изменений в AngularJS, поэтому требуется scope.$apply.

Однако обнаружение изменений углов - это другая история:

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

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

Это только потому, что он вызывается обновленным компонентом? И если так, есть ли какой-нибудь стандартный обходной путь для запуска этого кода за пределами угловой зоны, как во время начальной загрузки или в UpgradeComponent? Или это плохая практика, даже пытаться сделать это (например, если это вызовет проблемы синхронизации между Angular и AngularJS)?

Я могу попытаться привести минимальный пример, если необходимо.

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

...