任何人都可以帮助查看在我的模板中是否存在语法错误?它不会给出错误,但不会将数据填充到模板中。angular2异步管道不会将对象数据填充到模板中
<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>
元器件代码
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)
)
}
的的console.log(数据)打印 对象{_id:11,名称: “好先生”}其中我说,数据被正确地检索 。
<div>
块也显示出来,这意味着* ngIf将该对象视为非空。
<h2>{{hero}}</h2>
显示[object Object]。
但为什么{{hero.name}}不显示?
你有几件事情混为一谈。 'hero'是一个输入属性,但是你在ngOnInit()中赋值它 - 这很奇怪。赋值是一个Observable,它没有'name'属性,这就解释了为什么'{{hero.name}}'不起作用。这个答案应该可以帮助你:http://stackoverflow.com/a/34561532/215945 –
我更新了帖子并删除了@input。但仍然如此。异步管道应该把观察者变成英雄对象? – Shawn