Angular2:Observable flatMap error无法读取未定义的属性'subscribe'

Angular2:Observable flatMap error无法读取未定义的属性'subscribe'

问题描述:

我正在使用Angular 2最终版本并尝试执行依赖于另一个HTTP请求的HTTP请求。Angular2:Observable flatMap error无法读取未定义的属性'subscribe'

我的情况下试图getAccount与用户id作为参数,它从另一个HTTP请求返回(的getUser

帐户服务:

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); 
      }); 
     } 
    }); 
} 

当调用getAccount从AppComponent.ts:

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缺少

return Observable.fromPromise(this.user 
+0

感谢!我不敢相信这么多时间在这 –

+0

不客气。很高兴听到这个问题解决了你的问题:-) –