要在应用程序初始化中获取数据,请使用APP_INITIALIZER
。为了仅在加载数据时显示页面,我返回一个可以解决的承诺。
它工作正常,但是每次重新加载时都会获取数据,因此每次都有望解决,这会导致用户进入Web应用程序的延迟。
有旁路吗?我肯定从一开始就需要这些数据,但是不必是实时的。
缓存如何?为了启用每个文档的缓存,我使用了AngularFirestoreModule.enablePersistence()
。但是,如何获取缓存的数据,如果没有缓存的数据,该如何从Firestore加载?
AppInitService:
Init(): Promise<any> {
return new Promise((resolve) => {
this.db.collection('entries').valueChanges()
.subscribe(val => {
this.casesService.data = val;
resolve(true);
});
});}
app.module.ts
export function initializeApp1(appInitService: AppInitService) {
return (): Promise<any> => {
return appInitService.Init();
};
}
providers: [
AppInitService,
{ provide: APP_INITIALIZER, useFactory: initializeApp1, deps: [AppInitService], multi: true }
],