2017-10-03 1 views
0

Im face au problème angulaire 4, en essayant d'obtenir les détails de l'utilisateur spécifique lorsque son cliqué sur le profil de lien utilisateur '.Impossible de souscrire parce que la valeur de retour est AnonymousSubject au lieu de Observable

Mais je ne peux pas souscrire à ma fonction, parce que la valeur de retour de switchMap est AnonymousSubject au lieu de Observable:

ngOnInit() { 
    this.route.paramMap.switchMap((params: ParamMap) => this.getHero(+params.get('id'))) 
     .subscribe(hero => { 
     this.hero = hero; 
     }) 
    } 

Et voici la fonction getHero:

getHero(id: number) { 
    return this.getHeroes().find(hero=>hero.id===id); 
    } 

Les getHeroes () retourne un objet simple de données json avec des détails sur les héros (identifiant et nom).

Merci pour toute aide/suggestion!

+0

pouvez-vous poster votre méthode getHeroes? Est-ce qu'il retourne un tableau? – LLai

+0

@LLai vous le simple retour HeroList, et qui est un tableau d'objets – Teshma

+0

switchMap vous attend de revenir une observable, promesse, tableau ou itérable. Votre méthode getHero renvoie un objet. Essayez de le faire retourner un observable avec la valeur de l'objet. 'Retour Observable.of (this.getHeroes() trouver (héros => hero.id === id).)' – LLai

Répondre

0

switchMap vous attend de retourner un Observable, Promesse, Array, ou Iterable. Votre méthode getHero renvoie un objet. Essayez de le faire retourner un observable avec la valeur de l'objet.

getHero(id: number) { 
    let hero = this.getHeroes().find(hero=>hero.id===id); 
    return Observable.of(hero); 
}