2017-01-09 1 views
2

J'utilise la version finale d'Angular 2 et j'essaie d'effectuer une requête HTTP qui dépend d'une autre requête HTTP.Angular2: erreur flatMap observable Impossible de lire la propriété 'subscribe' de undefined

Mon cas tente de getAccount avec l'ID utilisateur en tant que paramètre qui est revenu d'une autre requête 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 (dépend système externe, fonctionne comme requis):

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

Lors de l'appel de getAccount à partir de AppComponent.ts:

this.accountService.getAccount().subscribe(data => { console.log('account:', data); }); 

Je reçois l'erreur suivante:

EXCEPTION: Uncaught (in promise): Error: Error in :0:0 caused by: Cannot read property 'subscribe' of undefined TypeError: Cannot read property 'subscribe' of undefined

des idées ce qui cause cette erreur?

grâce

Répondre

3

Un return est manquant

return Observable.fromPromise(this.user 
+0

merci !!! Je ne peux pas croire passé autant de temps sur ce –

+0

De rien. Heureux d'entendre cela résolu votre problème :-) –