Angular2:Observable flatMap错误无法读取undefined的属性'subscribe'

时间:2017-01-09 10:25:50

标签: angular rxjs observable flatmap

我正在使用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”

任何想法导致此错误的原因是什么?

感谢

1 个答案:

答案 0 :(得分:3)

缺少return

return Observable.fromPromise(this.user