Async tuyau de ne pas remplir les données de l'objet dans le modèle

Quelqu'un peut-il m'aider à voir si il y a une erreur de syntaxe ici dans mon template? Il ne donne pas d'erreur, mais ne pas remplir les données dans le modèle, soit:

<div *ngIf="(hero | async)">
  <h2>{{hero}}</h2>
  <h2>{{hero.name}} details!</h2>
  <div>
    <label>_id: </label>{{hero._id}}</div>
  <div>
    <label>name: </label>
    <input [(ngModel)]="hero.name" placeholder="name" />
  </div>
  <button (click)="goBack()">Back</button>
</div>

Code du composant

export class HeroDetailComponent implements OnInit {
    errorMessage: string;

    //@Input() 
    hero: Observable<Hero>;

    constructor(
        private _heroService: HeroService,
        private _routeParams: RouteParams) {
    }

    ngOnInit() {
        let _id = +this._routeParams.get('_id');
        this._heroService.loadHero(_id);
        this.hero = this._heroService.hero$;
        this.hero.subscribe(data => 
           console.log(data)
        )
    }

La console.log(data) imprime:

Objet {_id: 11, nom: "Monsieur Gentil"}

ce qui signifie que les données sont correctement récupérées.

La <div> bloc également présente, ce qui signifie *ngIf voit l'objet comme non-vide.

<h2>{{hero}}</h2> montre [object Object].

Mais pourquoi le {{hero.name}} ne s'affiche pas?

  • Vous avez quelques choses mélangées. hero est une entrée de la propriété, mais vous pouvez ensuite affecter une valeur dans ngOnInit() -- c'est étrange. La valeur assignée est un fait Observable, qui n'ont pas de name de la propriété, ce qui explique pourquoi {{hero.name}} ne fonctionne pas. Cette réponse devrait vous aider: stackoverflow.com/a/34561532/215945
  • J'ai mis à jour le post et supprimer le @entrée. Mais toujours le même. L'async pipe est censé tourner à la observables dans les héros de l'objet?
InformationsquelleAutor Shawn | 2016-04-22