AngularJS UI路由器解析和ocLazyLoad竞争条件

时间:2019-02-21 18:01:52

标签: angularjs angular-ui-router oclazyload

我有一个定义了以下状态的应用

.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加载所有组件之后才能启动?

0 个答案:

没有答案