Как правильно установить «трубу фильтра», чтобы я вводил значение в поле ввода компонента, а другой компонент отображал результаты поиска - PullRequest
0 голосов
/ 11 мая 2018

Если он в одном компоненте, то все нормально

<input class="top-input" type="text"
       placeholder="Search..."
       [(ngModel)]="term">

<div class="quiz-item" *ngFor="let test of tests | filter: term" (click)="passTestNotify(test)"> ...

Но я хочу ввести значение в одном компоненте, а в другом компоненте тесты должны быть отфильтрованы по имени через переменную «term», которую я ввел в первом компоненте.

И я не знаю, как это сделать. Мои варианты: Сервис, ViewChild, BehaviorSubject, еще один канал. Помогите решить пожалуйста ..

Моя трубка

@Pipe({
  name: 'filter',
  pure: false
})
export class FilterPipe implements PipeTransform {
  transform(items: any[], term): any {
    console.log('term', term);

    return term
      ? items.filter(item => item.title.indexOf(term) !== -1)
      : items;
  }
}

1 Ответ

0 голосов
/ 11 мая 2018

Сделал это через BehaviorSubject. Хорошая вещь)

...