Хочу реализовать простейший фильтр списка. За основу взял один из туториалов из документации. Но мне нужно немного изменить поведение: если в туториале с пустым текстовым полем список получается пустой, то мне нужно, чтобы в этом в списке после загрузки страницы выводились все элементы массива.
Вот темплейт:
<div>
<input #searchBox id="search-box" type="text" (keyup)="search(searchBox.value)"/>
<ul>
<li *ngFor="let contact of displayedContacts | async" class="contact">
<span>{{contact.name}}</span>
</li>
</ul>
</div>
Часть кода компонента:
contacts: Array<any>;
displayedContacts: Observable<any[]>;
private searchTerms = new Subject<string>();
...
this.displayedContacts = this.searchTerms
.debounceTime(300)
.distinctUntilChanged()
.switchMap(term => this.filterContacts(term))
.catch(error => {
console.log(error);
return Observable.of<any[]>([]);
});
...
search(term: string): void {
this.searchTerms.next(term);
}
То что мне нужно пока получается добиться с помощью такого кода:
setTimeout(()=>{
this.searchTerms.next("");
}, 1500);
Но должен быть нормальный способ это сделать.