Мой JSON
файл с именем employee
выглядит следующим образом:
[
{
"id": "E01",
"name": "neetha",
"age": 20,
"gender": "female",
},
{
"id": "E02",
"name": "Kiran",
"age": 24,
"gender": "male",
},
{
"id": "E03",
"name": "Jhon",
"age": 28,
"gender": "male",
}
]
У меня есть компонент с именем list
, где я фильтрую это employees
по их именам с помощью пользовательских каналов, например:
list.component.html
<div>
<mat-form-field>
<input matInput [(ngModel)]="searchTerm" placeholder="Search">
</mat-form-field>
<mat-selection-list class="list">
<mat-list-option *ngFor="let employee of employees | employeeFilter : searchTerm; let i=index">
<a mat-list-item (click)="onSelect(employee,i)"><span>{{employee.name}}</span></a>
</mat-list-option>
</mat-selection-list>
</div>
employee-filter.pipe.ts
import { PipeTransform, Pipe } from '@angular/core';
import { Employee } from '../models/employee.model';
@Pipe({
name: 'employeeFilter'
})
export class EmployeeFilterPipe implements PipeTransform {
transform(employees: Employee[], searchTerm: string): Employee[] {
if (!employees || !searchTerm) {
return employees;
}
return employees.filter(employee =>
employee.name.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1);
}
}
ТеперьЯ фильтрую, используя свойство name
, но я хочу фильтровать, используя age
, gender
вместе с name
. Используя то же поле ввода, я хочу фильтровать. Как мне этого добиться?