我正在使用管道过滤数据表中的三个不同列上的数据。 该列的名称是category
,name
,department
。管角2过滤多列考虑空值
我传递的参数如下所示:
<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;
}
}
这样,使用者与具有的category
非空值被认为是一些name
只有行的搜索。
我想考虑具有空值的行,但我无法这样做。
如果我改变我管:
@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
任何帮助将不胜感激。
它看起来像查询变量没有被设置 – LiverpoolOwen
你的代码在哪里设置这个变量 – LiverpoolOwen
@LiverpoolOwen我有三个文本框设置查询变量。我将编辑我的问题。 – mistletoe