Разрешение UI-маршрутизатора AngularJS и состояние гонки ocLazyLoad - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть приложение со следующим определенным состоянием

.state("some.state", {
    url: ...,
    ...
    resolve: {
        someCheck: ["myService", "$state", checkForNotifications]
    }
})

все работает нормально, кроме случаев, когда время от времени я вижу плавающую ошибку при изменении состояния, страница не загружается и консоль показывает

Error: "[$injector:unpr] Unknown provider: MyServiceProvider <- MyService       

После некоторой отладки я заметил, что консоль также содержит

ocLazyLoad.componentLoaded
Array(3) [ "app.my-module", "service", "MyService" ]

, и в случаях, когда все решено правильно, этот журнал ocLazyLoad идет первым.Если происходит ошибка, я вижу, что MyService был загружен позже.Итак, насколько я понимаю, lazyload, отвечающий за загрузку MyService, ничего не знает о разрешении в ui-router, и они, в основном, работают независимо.Когда resol выполняется до того, как ocLazyLoad загрузил MyService, инжектор ничего об этом не знает и выдает исключение (моё понимание может быть неверным, поскольку я довольно далёк от того, чтобы быть экспертом по Angular).Можно ли гарантировать, что resolve запустится только после того, как ocLazyLoad загрузит все компоненты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...