#angular6
#angular6
Вопрос:
У меня есть сервис, который определяет объект для совместного использования несколькими компонентами. Я устанавливаю значения этого объекта в функции, которая вызывается во время APP_INITIALIZER, и сначала кажется, что все в порядке, но когда я пытаюсь получить этот объект из других компонентов, он всегда пуст…
В моем data.service.ts у меня есть это:
// Object to be shared across components
private loggedUser = {};
setObject(user) {
this.loggedUser = user;
}
getObject() {
return this.loggedUser;
}
// Function that is correctly executed during the APP_INITIALIZER
Init() {
return new Promise<void>((resolve, reject) => {
this.getCurrentUser().subscribe((data: any) => {
// I receive an object with some properties here
this.setObject(data);
resolve();
});
});
}
Затем в одном из моих компонентов я пытаюсь получить этот объект с:
ngOnInit() {
var user = this.dataService.getObject();
console.log(user); // It's always empty
}
ОТРЕДАКТИРОВАНО:
В моем app.module.ts у меня есть фабрика, которая получит обещание от функции Init ():
export function initializeApp1(appInitService: DataService) {
return (): Promise<any> => {
return appInitService.Init();
}
}
providers: [ DataService, { provide: APP_INITIALIZER, useFactory: initializeApp1, deps: [DataService], multi: true} ],
Как вы можете видеть, моя цель — установить объект во время APP_INITIALIZER и после этого иметь возможность совместно использовать его между компонентами.
Комментарии:
1. где вызывается Init (), кому он возвращает обещание?
2. Обновил вопрос, смотрите Отредактированный раздел.