角度2过滤管道上有多个值

时间:2017-11-04 17:47:24

标签: angular typescript angular-pipe

我目前正在尝试使用管道过滤用户表。我让它为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,以便根据它返回值。因此,假设用户列的行包含:

  • Adam,Adam,Brenda,Dan,Harry,Harry,Harry

我通过了filterQuery [&#39; Adam&#39; ,&#39;哈利&#39;]我会回来的:

  • 亚当,亚当,哈利,哈利,哈利

任何有关修改代码以帮助实现此目的的帮助将不胜感激!我尝试使用查询在变换函数中做一些循环:string []但是没有运气。

谢谢!

1 个答案:

答案 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;
  }
 }
}