У меня есть одноэлементная служба, которая просто получает пользователя от конечной точки.
Затем пользователь вводится в каждый компонент, где это необходимо.
Проблема состоит в том, что существуют другие функции, которые должны выполняться в компонентах, которые зависят от значения пользователя (то есть ждут значения пользователя перед выполнением указанных функций).
Как я могу "дождаться" значения от службы, прежде чем продолжить? Это ожидание, очевидно, будет необходимо только при начальной загрузке приложения, в то время как у синглтона уже будет свой экземпляр для последующих компонентов.
Сервисный компонент:
userDetails:IEmployee = {};
constructor(private service: ServiceCaller) {
this.User().subscribe((x) => {
this.userDetails = x;
});
}
public User():Observable<IEmployee> {
if(this.userDetails == undefined){
return this.service.get('/some/url')
.map((resp: IResponse) => {
return resp.Response
});
}
else {
//How to return an observable of this.userDetails?
let obs = Observable.create((observer:any) => {
observer.next(this.userDetails);
});
return obs;
}
}
}
Другие компоненты:
this.userService.User().subscribe((x) => {
//result empty
});
Я не совсем уверен, правильно ли я подхожу к этому, но помощь будет оценена.