НЕ использовать канал, но вам нужен только фильтр функций и переосмыслите ваш код, используя массивы и [(ngModel)].Представьте, что у вас есть массив объектов типа
selects=[
{description:"París",type:"pais",data:"paris",value:false},
{description:"London",type:"pais",data:"london",value:false},
..
{description:"Male",type:"gender",data:"male",value:false},
{description:"Female",type:"gender",data:"female",value:false}
...
]
. Вы можете создать .html как
<ul>
<li *ngFor="let select of selects>
<input type="checkbox" [(ngModel)]="select.value"
(change)="refresh()">{{select.data}}
</li>
</ul>
Ваша функция refresh () может быть похожа на
refresh()
{
if (this.selects.find(x=>x.value)) //if there are al least one filter
{
this.employeesFiltered = null;
this.selects.forEach(select=>{
if (select.value)
{
switch(select.type)
{
case "pais":
this.employeesFiltered=this.employeesFiltered ?
this.employeesFiltered.filter(e=>e.pais==select.data) :
this.employees.filter(e=>e.pais==select.data)
break;
case "gender":
....
...
}
}
}
})
}
else
this.employeesFiltered = this.employees;
}