Can anyone help me see if there is a syntax error here in my template? It does not give error, but does not fill in data into the template either:
<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>
Component code
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)
);
}
}
The console.log(data)
prints:
Object {_id: 11, name: "Mr. Nice"}
which means that the data is correctly retrieved.
The <div>
block also shows up, which mean *ngIf
sees the object as non-empty.
<h2>{{hero}}</h2>
shows [object Object]
.
But why the {{hero.name}}
is not showing?