Показать сообщение отдельно
  #1 (permalink)  
Старый 01.01.2017, 23:20
Интересующийся
Отправить личное сообщение для Digan Посмотреть профиль Найти все сообщения от Digan
 
Регистрация: 08.10.2012
Сообщений: 12

Angular 2. Фильтрация с RxJs
Хочу реализовать простейший фильтр списка. За основу взял один из туториалов из документации. Но мне нужно немного изменить поведение: если в туториале с пустым текстовым полем список получается пустой, то мне нужно, чтобы в этом в списке после загрузки страницы выводились все элементы массива.

Вот темплейт:
<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);


Но должен быть нормальный способ это сделать.
Ответить с цитированием