AG-Grid:如何在无限行模型中使用自定义过滤器

AG-Grid: How to use custom filters with infinite row model

我正在使用 AG Grid Angular 并希望将 自定义过滤器 无限行模型 结合使用。

documentation of the custom filters没有提到无限行模型,所以不清楚两者是否兼容。我已经实现了文档中的“简单过滤器”示例并将其附加到我的网格,这是我观察到的:

在我看来,这几乎可以工作,除了自定义过滤器需要:

有没有正确的方法,我错过了?

如果您使用的是无限行模型,网格希望您自己处理数据过滤,并return getRows 回调中过滤的行,如此处记录:https://www.ag-grid.com/angular-grid/infinite-scrolling/#sorting--filtering

请参阅以下示例,其中显示了如何使用自定义筛选器组件筛选年龄列中的行:https://plnkr.co/edit/riKeOvcWdUwWioVs

getModel 回调中,您只需 return 一个值/对象,它将由网格作为 request.filterModelgetRows:

中传递
  getModel(): any {
    if (this.filterValue === 'all') {
      return null;
    } else {
      return {
        filter: this.filterValue,
        type: 'equals',
      };
    }
  }

然后在 getRows 里面我写了一些基本的功能来过滤数据:

          getRows: function (params) {
            console.log(
              'asking for ' + params.startRow + ' to ' + params.endRow
            );
            setTimeout(function () {
              var dataAfterFiltering = filterData(data, params.filterModel);
              var rowsThisPage = dataAfterFiltering.slice(
                params.startRow,
                params.endRow
              );
              var lastRow = -1;
              if (dataAfterFiltering.length <= params.endRow) {
                lastRow = dataAfterFiltering.length;
              }
              params.successCallback(rowsThisPage, lastRow);
            }, 500);
          },