У меня есть приложение со следующим определенным состоянием
.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 загрузит все компоненты?