Я использую Angular 6 Pipe.Я хочу фильтровать или искать из поля таблицы.Я загрузил данные списка в таблицу.Я создал собственный файл канала.Я могу отфильтровать или выполнить поиск объекта, например (Applicant.vivaBoardId), из списка, но не могу отфильтровать или выполнить поиск из поля объекта (Applicant.studentInfo.formSerialNo или Applicant.studentInfo.firstName) внутри объекта.
// код трубного фильтра
@Pipe({
name: 'searchFilters'
})
export class IdAndNameFilterPipe implements PipeTransform {
transform(items: any, filter: any, defaultFilter: boolean): any {
if (!filter){
return items;
}
if (!Array.isArray(items)){
return items;
}
if (filter && Array.isArray(items)) {
let filterKeys = Object.keys(filter);
if (defaultFilter) {
return items.filter(item =>
filterKeys.reduce((x, keyName) =>
(x && new RegExp(filter[keyName], 'gi').test(item[keyName])) || filter[keyName] == "", true));
}
else {
return items.filter(item => {
return filterKeys.some((keyName) => {
return new RegExp(filter[keyName], 'gi').test(item[keyName]) || filter[keyName] == "";
});
});
}
}
}
}
// html code
<input placeholder="Search by Form Sl" name="searchFilter [(ngModel)]="searchFilter">
<table>
<thead>
<tr>
<th>Form SL</th><th>Name</th><th>Viva Board Id</th><th>Viva Marks</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let applicant of applicantListForVivaMarksEntry | searchFilters: {formSerialNo: searchFilter}">
<td>{{applicant.studentInfo.formSerialNo}}</td>
<td>{{applicant.studentInfo.firstName}}</td>
<td>{{applicant.vivaBoardId}}</td>
</tr>
</tbody>
</table>