Я использую Angular 6, и я хотел бы отфильтровать результаты асинхронного канала, прежде чем отображать их в пользовательском интерфейсе.
Вот мой код прямо сейчас
this.results = this.form.get('name').valueChanges.pipe(
filter(formdata => formdata.name.length > 0),
switchMap( formdata => this.service.getNames(formdata.name))
);
и шаблон
<div *ngIf='results | async ; let items'>
<div *ngFor='let item of items'>{{item.id}} {{item.name}} </div>
</div>
Из трубы я получаю некоторые идентификаторы и имена. У меня уже есть массив идентификаторов. Я хотел бы фильтровать идентификаторы канала, а не отображать те, которые уже есть в массиве.
Итак, вот что я пытаюсь сделать.
array = [{id:1,name:'one'},{id:2,name:'two'}];//I already have this
новая версия фильтра в трубе
this.results = this.form.get('name').valueChanges.pipe(
filter(formdata => formdata.name.length > 0),
switchMap( formdata => this.service.getNames(formdata.name)) ,
filter(checkIfResultIdInArray())//pseudocode
);
Предположим, что checkIfResultIdInArray
- это функция, которую я создал. Фильтрует и возвращает все идентификаторы, которых нет в array
. Таким образом, идентификаторы / имена, которые заканчиваются в шаблоне, не являются {id:1,name:'one'},{id:2,name:'two'}
.
А может я как-то отфильтрую в шаблоне?