我正在使用Angular 2最终版本并尝试执行依赖于另一个HTTP请求的HTTP请求。
我的情况是尝试 getAccount 并将用户ID作为参数从另一个http请求返回( getUser )
的AccountService:
constructor(private http: Http, private userService: UserService) {
}
getAccount(): Observable<Account> {
let tenant: string = 'test';
Observable.fromPromise(this.userService.getUser()).flatMap(
user => {
return this.http.get('/tenants/' + tenant + '/accounts/' + user.id + '/')
.map((res: Response) => {
return res.json();
});
});
}
UserService(取决于外部系统,按要求工作):
getUser(): Promise<User> {
return new Promise<User>((resolve, reject) => {
if (KeycloakService.auth.authz.token) {
return KeycloakService.auth.authz.loadUserInfo().success((data) => {
resolve(<User> data);
}).error(() => {
reject(null);
});
}
});
}
从AppComponent.ts调用getAccount时:
this.accountService.getAccount().subscribe(data => { console.log('account:', data); });
我收到以下错误:
EXCEPTION:未捕获(在承诺中):错误:错误:0:0引起:无法读取未定义的属性'subscribe' TypeError:无法读取未定义的属性“subscribe”
任何想法导致此错误的原因是什么?
感谢
答案 0 :(得分:3)
缺少return
return Observable.fromPromise(this.user