我目前正在尝试使用管道过滤用户表。我让它为1选择工作,但我试图将它扩展到多个选择。请记住,这仅适用于表格的一列。截至目前,我有一栏用户,如:Adam,Brenda,Dan,Harry。等等。请记住,此列可能是我想要返回的同名的多个列。我目前的管道实现如下:
import * as _ from 'lodash';
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'dataFilter'
})
export class DataFilterPipe implements PipeTransform {
transform(array: any[], query: string): any {
if (query) {
return _.filter(array, row=>row.user.indexOf(query) > -1);
}
return array;
}
}
我的html很简单:
<table [mfData]="tableData | dataFilter : filterQuery" #mf="mfDataTable">
filterQuery只是一个字符串。基本上我想要做的是将一个名称数组传递给该filterQuery,以便根据它返回值。因此,假设用户列的行包含:
我通过了filterQuery [&#39; Adam&#39; ,&#39;哈利&#39;]我会回来的:
任何有关修改代码以帮助实现此目的的帮助将不胜感激!我尝试使用查询在变换函数中做一些循环:string []但是没有运气。
谢谢!
答案 0 :(得分:1)
我通过这个管道工作:
export class DataFilterPipe implements PipeTransform {
transform(array[], query:string[]):any[] {
if (typeof array === 'object') {
var resultArray = [];
if (query.length === 0) {
resultArray = array;
}
else {
resultArray = (array.filter(function (a) {
return ~this.indexOf(a.user);
}, query));
}
return resultArray;
}
else {
return null;
}
}
}