我在“订阅”和随附的Promise中发现了错误。
@Injectable()
export class CountryListResolver {
public countryList: Locale[];
constructor(private portareServices: PortareServices) { }
load() {
return new Promise((resolve, reject) => {
this.portareServices.getCountryList().subscribe((data) => {
this.countryList = data;
resolve(true);
},
error => {
console.log('CountryListResolver', error);
},
() => {
// No errors, route to new page
});
}).catch((err: any) => Promise.resolve());
}
}
现在的事情是,当我取消对从服务中实际获取数据的功能的评论时,应用程序加载就很好了(显然没有将数据放置在最初应该加载的地方)。
// this.localesEU = this.portareDataModel.setLocalesEU = this.countryListResolver.countryList;
注释掉load
函数后,应用程序加载就很好了。另外,如果服务成功解决,那么一切都将像灵符一样工作。
providers: [
CountryListResolver, { provide: APP_INITIALIZER, useFactory: countryListProviderFactory, deps: [CountryListResolver], multi: true }
]
如何处理此问题?
答案 0 :(得分:1)
每this related answer,当APP_INITIALIZER
被拒绝时,它就脱离了bootstrapModule
返回的承诺:
// main.ts
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => { ... fail gracefully });