ag-grid:每次单击过滤器时调用函数

时间:2019-07-01 17:25:10

标签: ag-grid ag-grid-angular

每次在ag-grid中单击过滤器图标时如何调用函数。下面是我的代码。我的目的是每次单击过滤器图标时重置Name列的过滤器值。我必须使用agSetColumnFilter。我尝试过filterParams,但每次都不会调用它,只有一次可以有人指导我吗?

  constructor(private http: HttpClient) {
    this.columnDefs = [
      {
        headerName: "Name",
        field: "name",
        width: 150,
        filter: "agSetColumnFilter",
        menuTabs: ['filterMenuTab']
      }
    ];
  }

  onGridReady(params) {
    this.rowData = [
      {
        name: "A",
        flag: true
      },
      {
        name: "B",
        flag: false
      }
    ];
  }

1 个答案:

答案 0 :(得分:0)

您可以使用postProcessPopup回调(请参阅文档here)。每次您单击过滤器图标时都会调用此回调。

将回调添加到html中:

[postProcessPopup]="postProcessPopup"

然后创建您的postProcessPopup函数:

this.postProcessPopup = function(params) {
      if (params.column.colDef.field === 'name')
      {
        var athleteFilter = this.gridApi.getFilterInstance('name');
        athleteFilter.selectEverything();
        this.gridApi.onFilterChanged();
      }
    }.bind(this);

如果点击过滤器图标用于字段name,则选择该过滤器的所有内容,然后调用onFilterChanged上的gridApi函数以确保其更新。

您会看到工作正常的here(尝试过滤“运动员”字段)。

有关过滤器API的更多文档,请参见here