Я использую канал для фильтрации данных по трем разным столбцам в таблице данных. Имена столбцов: category
, name
, department
.
Я передаю аргументы следующим образом:
<table class="table table-striped" [mfData]="listdata | dataFilter : filtername : filterDep : filterCategory">
У меня есть цикл *ngFor
:
<tr *ngFor="let item of mf.data; let i =index">
<td>
{{i+1}}
</td>
<td>{{ item.name }}</td>
<td>{{item.department}}</td>
<td>{{item.category}}</td>
</tr>
Код, который устанавливает переменную запроса,
<th colspan="2">
Filter by name:
<input class="form-control" [(ngModel)]="filtername" (input)="change()" />
</th>
<th colspan="1">
Filter by Department:
<input class="form-control" [(ngModel)]="filterDep" (input)="change()" />
</th>
<th colspan="1">
Filter by Category:
<input class="form-control" [(ngModel)]="filterCategory" (input)="change()" />
</th>
У меня есть данные, в которых часть category
равна null
.
Труба, которую я использую:
@Pipe({
name: "dataFilter"
})
export class DataFilterPipe implements PipeTransform {
transform(array: any[], query: string, query2: string, query3: string): any {
let notNullCategory = _.reject(array, ['category', null]);
if (query || query2 || query3) {
return _.filter(notNullCategory, row => ((row.name.indexOf(query) > -1) && (row.department.indexOf(query2) > -1) && (row.category.indexOf(query3) > -1)));
}
return array;
}
}
Таким образом, если пользователь выполняет поиск с некоторым name
, учитываются только строки, которые имеют ненулевые значения category
.
Я также хочу принять во внимание строки с нулевыми значениями, но я не могу этого сделать.
Если я изменю свою трубку на:
@Pipe({
name: "dataFilter"
})
export class DataFilterPipe implements PipeTransform {
transform(array: any[], query: string, query2: string, query3: string): any {
if (query || query2 || query3) {
return _.filter(array, row => ((row.name.indexOf(query) > -1) && (row.department.indexOf(query2) > -1) && (row.category.indexOf(query3) > -1)));
}
return array;
}
}
Я получаю сообщение об ошибке:
Cannot read property 'indexOf' of null
Любая помощь будет принята с благодарностью.