Angular 2 : Observable flatMap error Cannot read property 'subscribe' of undefined

标签 angular rxjs observable flatmap

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

相关文章:

android - 相当于 Ionic 2 中的 setOnItemLongClickListener

angular - ionic 4 + Angular : routerLink only works first time

angular - 类型 'Observable<unknown[]>' 不可分配给类型 'Observable<Event[]>'

Angular 5 - 相当于 AngularJS 的 $interval

angular2 - 在 observable 完成后导航

Angular Observable 等到它完成

angular - 获取当前模块的所有路由 - Angular 2

angular - 使用选择器在 Angular 2 中动态加载组件

RxJS - 没有订阅/BehaviorSubject 也一样吗?

angularjs - 缓存和延迟数据检索的可观察模式