APP_INITIALIZER blank page



我在使用APP_INITIALIZER时遇到问题。一切似乎都很好,函数到达端点并返回并执行解析(true(。问题是,毕竟我只能看到空白的屏幕。控制台中有0个错误。这是代码:

export function initApplication(store: Store<fromRoot.State>){//() => Observable<any> {
return (): Promise<any> => { 
return new Promise(resolve => {
store.dispatch(AppActions.StartAppInitializer());
store.dispatch(AppActions.LoadUserSettings());
store.select(fromRoot.getUserSettingsLoaded)
.pipe(
tap(userSettingsLoaded => console.log(userSettingsLoaded)),
filter(userSettingsLoaded =>  userSettingsLoaded == true),
take(1)
)
.subscribe((userSettingsLoaded) => {
store.dispatch(AppActions.FinishAppInitializer());
resolve(true);
})})}
}

这里的代码在app.module.ts中的@NgModule中的提供者部分

{
provide: APP_INITIALIZER, 
useFactory: initApplication,
multi: true,
deps: [Store]
}

有什么建议吗?

从注释中看,这似乎是未正确评估的筛选条件。我想知道你的选择是否是它不起作用的原因,你能试着移除选择周围的管道((吗?

更改此项:

store.pipe(select(fromRoot.getUserSettingsLoaded))

到此:

select(fromRoot.getUserSettingsLoaded)

问题是警卫在APP_INITIALIZER的同时开火。他们并没有等待app_init完成,他们需要app_init的操作结果。这就是佩奇并没有出现的原因——警卫挡住了他们。对我来说,解决方案是添加app.routing.module.ts

initialNavigation: 'disabled'

然后在app.component.ts 的构造函数中启用它

router.initialNavigation();

相关内容

  • 没有找到相关文章

最新更新