2017-01-09 3 views
2

Я использую окончательную версию Angular 2 и пытаюсь выполнить HTTP-запрос, который зависит от другого HTTP-запроса.Angular2: Observable flatMap error Невозможно прочитать свойство «подписаться» не определено

Мой случай пытается getAccount с идентификатором пользователя в качестве параметра, который возвращается из другого запроса 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); 
      }); 
     } 
    }); 
} 

При звонке в 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

любые идеи, что вызывает эту ошибку?

благодаря

ответ

3

return отсутствует

return Observable.fromPromise(this.user 
+0

спасибо !!! Я не могу поверить, что потратил столько времени на это –

+0

Добро пожаловать. Рад слышать, что это исправило вашу проблему :-) –

Смежные вопросы