Javascript 角度6过滤器多表列

Javascript 角度6过滤器多表列,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个包含银行详细信息的表,我想根据搜索字段输入筛选表列中的所有内容。但是它不工作,有人能帮我调试这个问题吗。当我在搜索字段中键入某些内容时,整个表数据就会消失 <div> <div> <select (change)="OnSelectedCity($event)"> <option *ngFor="let cityObj of cityList" [value]="cityObj.value">{{cityObj.di

我有一个包含银行详细信息的表,我想根据搜索字段输入筛选表列中的所有内容。但是它不工作,有人能帮我调试这个问题吗。当我在搜索字段中键入某些内容时,整个表数据就会消失

<div>
  <div>
    <select (change)="OnSelectedCity($event)">
      <option *ngFor="let cityObj of cityList" [value]="cityObj.value">{{cityObj.displayValue}}</option>
    </select>
    <input type="text" [(ngModel)]="filterText" [formControl]="filterInput" />
  </div>
  <div>
    <table>
      <thead>
        <tr>
          <th *ngFor="let header of tableHeader">{{header}}</th>
        </tr>
      </thead>
      <tbody>
        <tr *ngFor="let bank of bankList | filterdata: filterText">
          <td>{{bank.ifsc}}</td>
          <td>{{bank.bank_id}}</td>
          <td>{{bank.branch}}</td>
          <td>{{bank.address}}</td>
          <td>{{bank.city}}</td>
          <td>{{bank.district}}</td>
          <td>{{bank.state}}</td>
        </tr>
      </tbody>
    </table>
  </div>
</div> 



transform(items: Array<any>, searchText: string): any {
    if (searchText !== undefined) {
      return items.filter(item => {
        const filter = Object.keys(item);
        filter.forEach(element => {
          if (item[element].toLowerCase().indexOf(searchText.toLowerCase()) === -1) {
            return false;
          }
          return true;
        });
      });
    } else {
      return items;
    }
  }

{{cityObj.displayValue}
{{header}}
{{bank.ifsc}
{{bank.bank_id}
{{银行分行}
{{银行地址}
{{bank.city}
{{银行区}
{{bank.state}
转换(项:数组,搜索文本:字符串):任意{
if(searchText!==未定义){
返回项目。筛选器(项目=>{
常量过滤器=对象键(项);
filter.forEach(元素=>{
if(item[element].toLowerCase().indexOf(searchText.toLowerCase())=-1){
返回false;
}
返回true;
});
});
}否则{
退货项目;
}
}

您的管道中只有一个简单的错误。错误出现在
.forEach
调用中,因为无法停止或中断
forEach
循环,请参阅

调整后,管道可能如下所示:

transform(items: Array<any>, searchText: string): any {
    if (searchText) {
        return items.filter(item => {
            const filter = Object.keys(item);
            // Array.some() returns true if at least one entry meets the given condition
            return filter.some(
                key => item[key].toLowerCase().indexOf(searchText.toLowerCase()) !== -1
            )
        });
    }

    return items;
}
transform(项:数组,搜索文本:字符串):任意{
如果(搜索文本){
返回项目。筛选器(项目=>{
常量过滤器=对象键(项);
//如果至少有一个条目满足给定条件,则Array.some()返回true
返回过滤器(
key=>item[key].toLowerCase().indexOf(searchText.toLowerCase())!=-1
)
});
}
退货项目;
}

检查
控制台
可能重复的代码。您应该尝试使用浏览器调试器调试代码,并查看转换方法内部发生的情况。