【发布时间】:2018-01-06 08:44:17
【问题描述】:
在学习 Angular >= 2 时,我试图找到填充模板 <div *ngFor="let hero of heroes | async" 的 search(term: string): Observable<Hero[]> {} 的订阅者:
<div id="search-component">
<h4>Hero Search</h4>
<input #searchBox id="search-box" (keyup)="search(searchBox.value)" />
<div>
<div *ngFor="let hero of heroes | async"
(click)="gotoDetail(hero)" class="search-result" >
{{hero.name}}
</div>
</div>
英雄搜索服务:
@Injectable()
export class HeroSearchService {
constructor(private http: Http) { }
search(term: string): Observable<Hero[]> {
return this.http
.get(`app/heroes/?name=${term}`)
.map((r: Response) => r.json().data as Hero[])
.catch((error: any) => {
console.error('An friendly error occurred', error);
return Observable.throw(error.message || error);
});
}
在 heros.component.ts 中,我找到了组件绑定 heroes: Hero[];,但它不包含 HeroSearchService 中的 search(term: string): Observable<Hero[]> {} 返回的 observable。
我知道async 负责订阅 observable。但是在这里,heroes 不包含异步工作的可观察对象。
heroes 是如何被search() 填充的,因为heroes 不是一个不包含search() 返回的可观察对象?或者换一种方式问,由于 heroes 绑定没有 observable,异步订阅了什么?
【问题讨论】:
标签: angular