У меня есть проект, который отображает список участников. Я хотел бы отфильтровать их по поставщикам, используя флажки в режиме реального времени.
Участники:
[
{ 'name': 'test1', 'provider' : {'name': 'provider1'}}
{ 'name': 'test2', 'provider' : {'name': 'provider2'}}
{ 'name': 'test3', 'provider' : {'name': 'provider3'}}
{ 'name': 'test4', 'provider' : {'name': 'provider1'}'}
..
]
Мой HTML-шаблон:
Вот список флажков, который отображает поставщиков. Я использую это для фильтрации участников.
<div class="form-group" *ngFor="let provider of providers">
<input type="checkbox" name="providers" value="{{ provider.name }}" [(ngModel)]="provider.checked"
(change)="displayParticipantsByProvider($event.target.value)">{{ provider.lastName }}
</div>
А вот как я отображаю участников:
<ul>
<li *ngFor="let p of participants">{{ p.name }} - {{ p.provider.name }} </li>
</ul>
И моя функция фильтра в компоненте:
displayParticipantsByProvider(filterVal: any) {
if (filterVal === '0') {
this.participants = this.cathechParticipants;
} else {
this.participants = this.participants.filter((item) => item.provider.includes(filterVal));
}
}
Этот фильтр возвращает только проверенный элемент. Например, если провайдер 1 выбран из флажка, он возвращает участников, в которых есть провайдер1. Если я выберу провайдера2 из флажка, он возвращает только участников с провайдером2 в нем. Моя цель - загрузить их обоих, так как они оба выбраны. Итак, как я могу загружать участников, используя несколько флажков, которые позволяют мне фильтровать?