首页 > 解决方案 > 搜索字段的角管

问题描述

我有一个过滤搜索字段的管道,并根据搜索文本显示项目列表。目前,它仅过滤 companyDisplay。目标是过滤 companyCode 和 companyDisplay

JSON

[{
    companyDisplay: "ABC",
    companyName: "EFG",
    companyCode: "1234"
}]

搜索管道

import { Pipe, PipeTransform } from '@angular/core'; // serach text sorting
@Pipe({
    name: 'searchCompanyPipe'
})
export class SearchPipe implements PipeTransform {
  transform(items: any[], searchText: any): any[] {
    if (!items) { return []; }
    if (!searchText) { return items; }
    searchText = searchText.toLowerCase();
    return items.filter(i => {
      return (i.companyDisplay || i.companyCode).toLowerCase().includes(searchText);
    });
  }
}

HTML

<li *ngFor="let data of companyInfo| searchPipe:searchValue">

companyInfo持有json。

标签: javascriptangulartypescriptangular5angular-pipe

解决方案


这里的问题是以下代码:

(i.companyDisplay || i.companyCode)

companyDisplay只要它不是虚假值,就总是返回。你需要使用类似的东西:

return i.companyDisplay.toLowerCase().includes(searchText) || i.companyCode.toLowerCase().includes(searchText);

推荐阅读