【发布时间】:2019-08-27 08:23:11
【问题描述】:
我有一个不显示结果的下拉列表输入。它在带有异步的 ngIf 中。当我删除 ngIf 代码时会显示下拉列表,因此我认为它必须是 ngIf 检查或我设置测试可观察服务的方式。当我按下一个输入 1 个值的键时,没有显示任何内容,当我第二次输入一个键时,它会显示列表。
<div class="format-options" *ngIf="(definitions | async)?.length > 0">
<div *ngFor="let definition of definitions | async" class="search-result">
<div>{{definition.name}}</div>
<div>{{definition.description}}</div>
</div>
</div>
搜索服务:
searchTerm(term: string): Observable<Array<ObjectDefinition>>
let observer = new Observable<Array<ObjectDefinition>>((subscription) => {
const timer$ = interval(1000);
timer$.subscribe(() => {
console.log('timer 1 second');
subscription.next(this.objectDefinitions);
subscription.complete();
});
});
return observer;
}
组件:
constructor(private definitionService: DefinitionService) {
this.definitions = this.searchInput.valueChanges
.pipe(
tap(value => console.log('input')),
//startWith(''),
debounceTime(500),
//distinctUntilChanged(),
switchMap(value => this.definitionService.searchTerm(value))
);
}
【问题讨论】:
-
您是否介意详细说明您的代码。我真的不明白你想做什么?
-
你不应该订阅服务,使用 rxjs 操作符。