我正在使用 Angular 2 最终版本,并尝试执行依赖于另一个 HTTP 请求的 HTTP 请求。
我的案例是尝试使用从另一个 http 请求 (getUser) 返回的用户 ID 作为参数来getAccount
帐户服务:
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: Uncaught (in promise): Error: Error in :0:0 caused by: Cannot read property 'subscribe' of undefined TypeError: Cannot read property 'subscribe' of undefined
有什么想法导致此错误吗?
谢谢
最佳答案
缺少返回
return Observable.fromPromise(this.user
关于 Angular 2 : Observable flatMap error Cannot read property 'subscribe' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41545826/