Priming表中自定义筛选布尔值的问题



我正在使用priming Table在我的Angular应用程序中显示数据,我现在的问题是,我必须使用过滤器,但有条件的情况下,例如,如果用户键入0、1或2,我必须显示基于此的数据,我正在尝试的是这个

        if(value == 0) {
            table.filter(value, fieldName, 'equals');
        } else if(value == 1) {
            table.filter(0, fieldName, 'gt');
            table.filter(false, 'array[0].fieldName',  'equals');
        } else if(value == 2) {
            table.filter(0, fieldName, 'gt');
            table.filter(true, 'array[0].fieldName',  'equals');
        }

如果用户键入0,它的筛选很好,但问题是当他键入1或2时,因为我必须从2个字段进行筛选,我不确定我试图在priming中做什么是否可行。

table.filter(...)在单个列上工作。

它的设计目的是过滤特定列上的数据。以下是filter函数的类型定义:

filter(value: any, field: any, matchMode: any): void;

但您走的是正确的道路,因为可以设置不同的过滤器,每列一个,然后将其与AND组合以过滤表中的数据。

例如,以下函数可以使用多列进行过滤:

filter(dt) {
  dt.filter('Blue', 'color', 'equals');
  dt.filter('Bmw', 'brand', 'equals');
}

下面是一个模板示例:

<p-table #dt [value]="cars">
  <ng-template pTemplate="header">
     <tr>
      <th>
        Color
      </th>
      <th>
        Brand
      </th>
     </tr>
   </ng-template>
   <ng-template pTemplate="body" let-car>
     <tr>
      <td>{{car.color}}</td>
      <td>{{car.brand}}</td>
     </tr>
   </ng-template>
</p-table>
<button (click)="filter(dt)">Get Blue Bmw</button>

以及一个完整的组件:

export class MyComponent {
  cars: {
    color: string;
    brand: string;
  }[];
  constructor() {
    this.cars = [{
      color: "blue",
      brand: "bmw"
    },{
      color: "red",
      brand: "bmw"
    }];
  }
  filter(dt) {
    dt.filter('Blue', 'color', 'equals');
    dt.filter('Bmw', 'brand', 'equals');
  }
}

该按钮将在多个列上应用过滤器,从而产生数据用CCD_ 4 AND CCD_。

编辑:它对boolean的作用相同。

cars: {
  color: string;
  brand: string;
  enable: boolean;
}[];
filter(dt) {
  dt.filter('Blue', 'color', 'equals');
  dt.filter('Bmw', 'brand', 'equals');
  dt.filter(true, 'enable', 'equals');
}

在粘贴的代码中,由于有引号,'array[0].fieldName'被视为文字,因此它会查找字段名"array[0].fieldName",而不会对其求值。

相关内容

  • 没有找到相关文章

最新更新