我有一个定义了以下状态的应用
.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。因此,以我的方式理解-负责加载MyService
的lazyload对ui-router中的resolve一无所知,并且它们基本上是独立工作的。当在加载ocLazyLoad MyService
之前执行resolve时,注入器不了解任何信息,并引发异常(我的理解可能是错误的,因为我还不是Angular的专家。
有什么方法可以确保resolve
仅在ocLazyLoad加载所有组件之后才能启动?