我正在将建议添加到搜索框中。在输入内容时,您的输入用于通过点击服务来构建建议。直到Observable回来后才显示?
我已经按照this tutorial,它让我的东西,看起来像这样:
private suggestions: Observable<Suggestion[]>;
constructor() {
this.suggestions = this.entry.valueChanges
.debounceTime(400)
.distinctUntilChanged()
.switchMap((entry: string) => {
return this.api.getSuggestions(entry);
});
}
什么我希望做的是隐藏我的UI的部分建议,直至观察到已经回来的东西。我遇到的问题是,我唯一要做的工作是两次运行我的api调用。这里的我想要做什么:
<div [class.hidden]="!(suggestions | async)">
<span class="SearchDDHeader">Suggestions</span>
<ul class="suggestion-list">
<li *ngFor="#s of suggestions | async">
{{ s.Category }} ({{ s.Count }})
</li>
</ul>
</div>
使用async
意味着我必须订阅我suggestions
观察到的,这似乎是发生了什么叫我的API两次两件事情。
用简单的英语说:“我希望当最后一个数组suggestions
Observable返回包含1个或多个项目时,我希望div可见”,但我不确定正确的方法是什么。
这就是我决定我不太了解Observables,所以我会留下这个问题,以防有人拥有惯用的rxjs方式。 –
异步管道是为你订阅的,所以在@dfsq答案中,他自己在做,所以基本上它是一样的。 –