Ag-grid文本过滤器,用于过滤整个字符串数组

时间:2018-11-28 07:41:18

标签: angular angular-material ag-grid

  • 我正在使用带有多个选项的Angular Material选择。
  • 每次选择或取消选择一个选项时,我都会调用一个选项 过滤表中的数据并仅显示那些 已选择。

这是选择垫的代码。

<mat-form-field>
<mat-select placeholder="RequestID" id = "filter-check-box" multiple>
    <mat-option (onSelectionChange) = "RequestIDCheckboxFilter($event, RequestID)" 
 *ngFor="let RequestID of RequestIDArray" [value]="RequestID">{{RequestID}}</mat-option>
</mat-select>

  • 这是RequestIDArray的定义:RequestIDArray: string[] = ['REQ001', 'REQ002', 'REQ003', 'REQ004'];

这是RequestIDCheckboxFilter函数的定义。 ReqIDFilter是用于存储当前检查值的数组。 :

RequestIDCheckboxFilter(event, text: string) {
  var CheckboxFilterComponent = this.gridApi.getFilterInstance("requestID");
  if(event.isUserInput) {
    var index = this.ReqIDFilter.indexOf(text);
    if(index == -1) {
      this.ReqIDFilter.push(text);
    } 
    else {
      this.ReqIDFilter.splice(index, 1);
    }
  }

  for(var i = 0; i < this.ReqIDFilter.length; i++) {
    CheckboxFilterComponent.setModel({
      type: "equals",
      filter: this.ReqIDFilter[i]
    })
  }

  this.gridApi.onFilterChanged();
}

这样做时,即使选择了多个选项,我也只能看到其中的一行。说,如果选择了REQ001和REQ002,则只有带有REQ001的行可见。我也尝试过在setModel内使用for循环,但这会导致错误。有什么办法可以过滤表中数组中的所有值?

编辑:我正在使用ag-grid的社区版本。

1 个答案:

答案 0 :(得分:0)

我认为text filter无法做到这一点。 在循环中,您每次迭代都会覆盖过滤器模型。

另请参阅ag-grid gridApi.setFilterModel() model with multiple conditions [angular6]

企业版具有Set Filter,可以满足您的需求。

所以我看到以下选项

  • 购买企业版(价格昂贵)
  • 尝试创建自定义过滤器
  • 过滤网格的数据源,而不是直接过滤网格。

编辑:企业版有一个试用版,因此您可以测试是否设置过滤器是您所需的正确工具。

也许Does ag-grid have an api to filter multiple checkbox values?有帮助吗?