我想解决一个observable到它的底层类型。是的,我知道我应该不这样做,但目前我想测试没有修复我的架构的东西,我想知道它是否可能。
这是基本提供程序中用于调用GET请求的函数
getByRoute(url: string): Observable<T> {
return this.http.get(url).map(res => <T>res.json());
}
我有一个唯一的类返回一个具有Id的具体对象。 // public currentUser = {id:1};
但是现在我试图将我的提供程序实现为懒惰加载当前用户,我现在没有时间将所有内容切换为使用observable,但我想知道我的其他代码是否正常工作
private _user: User;
get currentUser(): User {
if (this._user == null) {
this._user = this.getLoggedInUser();
}
return this._user;
}
set currentUser(user: User) {
this._user = user;
}
constructor(public usersProvider: Users) {
}
getLoggedInUser(): User {
return this.usersProvider.getByRoute(URL).single();
};
如何解析我的Observable以获取实体?
答案 0 :(得分:1)
您需要订阅observable,然后将其分配给您班级的属性。
this.usersProvider.getByRoute(URL).subscribe(next => {
this.currentUser = next;
});
请注意,您需要自行处理此订阅的清理工作! (这个主题将有助于:Angular/RxJs When should I unsubscribe from `Subscription`)
另外,你无法真正“解决”一个Observable - 它不是一个承诺!查看此主题以获取更多信息:Angular - Promise vs Observable