我需要在对象中存储一些信息,以供所有组件使用,这是在应用程序中要做的第一件事,因此,我试图使用APP_INITIALIZER将对象设置为单例服务可用在组件的后面。
// app.module.ts
import { DataService } from './data.service';
providers: [DataService, { provide: APP_INITIALIZER, useFactory: initializeApp1, deps: [DataService], multi: true }],
export function initializeApp1(appInitService: DataService) {
return (): Promise<any> => {
return appInitService.Init();
}
}
// data.service.ts
@Injectable({
providedIn: 'root'
})
export class DataService {
public object = {
"test1": "",
"test2": ""
};
public getObj() {
return this.object;
}
Init() {
return new Promise<void>((resolve, reject) => {
// Requet some data from server
this.getData().subscribe((data: any) => {
this.object = data;
// Object set correctly
resolve();
});
});
}
}
// navbar.component.ts
import { DataService } from '../../data.service';
constructor(private dataService: DataService) { }
ngOnInit() {
// This always return the object with empty properties
var x = this.dataService.getObj();
}
我认为该服务可能创建了两次或类似的内容,但我找不到原因。