目前,我有这个:
new Loader().load().then(() => {
platformBrowserDynamic().bootstrapModule(AppModule);
});
问题是我不一定需要推迟一切直到承诺解决,只需ngOnInit
以及任何路线解析。我想允许任何其他不路由或渲染的 Angular2 设置,但会阻止这些设置,直到承诺解决。有没有更有效的方法来做到这一点?
使用 APP_INITIALIZER
第一个选择是使用APP_INITIALIZER。有了这个,你可以在开始之前做一些初始的事情AppComponent
被引导:
@NgModule({
// ...
providers: [
{
provide: APP_INITIALIZER,
useFactory: appInitFactory,
deps: [AppInitService],
multi: true
}
]
})
export class AppModule {}
随着deps
您可以在工厂内注入您可能需要的服务的数组:
export function appInitFactory(appInitService: AppInitService): () => Promise<any> {
return () => appInitService.initializeApplication();
}
您必须返回一个(箭头)函数。
使用路由器配置
第二个选项,如果您使用Router
是设置initialNavigation
to false
在你的forRoot致电RouterModule
:
@NgModule({
imports: [
RouterModule.forRoot(AppRoutes, {initialNavigation: false})
]
})
export class AppModule {}
然后在你的里面AppComponent
你应该有一些服务Promise
逻辑,并在完成后导航到您想去的地方。这个解决方案的“问题”是AppComponent
确实被初始化,但如果您只关心实际路线没有立即得到解决,但在等待解决时确实有某种应用程序外壳,您可以使用这个
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)