首页 > 解决方案 > 为什么 ag-grid 过滤器比较器没有执行?

问题描述

我目前使用的是 Angular 10.2ag-grid版和 25.3.0 版

在按照此处的 ag-grid 的日期列自定义过滤器文档之后,我决定将其应用于数字列并对其进行一些修改。基本上,如果用户过滤一个小于 0 的数字,它应该将过滤器和单元格值乘以 100 并进行比较。如果不是,则正常比较这些值。我的具体列定义如下:

{
  field: 'roi',
  headerName: 'ROI',
  valueGetter: this.calculateROI.bind(this),
  filter: 'agNumberColumnFilter',
  filterParams: {
    comparator: function(filterValue: number, cellValue: number) {
      console.log(filterValue);
      if (filterValue < 0) {
        filterValue *= 100;
        cellValue *= 100;
      }

      if (cellValue < filterValue) return -1;
      if (cellValue === filterValue) return 0;
      return 1;
    }
  },
  valueFormatter: this.percentFormat.bind(this),
  cellClassRules: {
    'cell-failure': (params: ValueFormatterParams) => params.value < 0,
    'cell-success': (params: ValueFormatterParams) => params.value > 0,
    'cell-even': (params: ValueFormatterParams) => params.value === 0,
  }
},

默认列定义也将可排序、过滤和调整大小全部设置为true.

我的问题是比较器功能甚至没有触发。控制台中没有控制台日志,即使它是比较器函数的第一行。我在 StackOverflow 上检查了 ag-grid 的 GitHub 问题和其他问题,但没有成功。

Stackoverflow 存在一些问题,但这些问题与 Column value Comparator 而不是filterParams. 任何帮助,将不胜感激。谢谢!

标签: javascriptangularag-gridag-grid-angularag-grid-ng2

解决方案


如果您想使用 agNumberComparator,您可以查看以下文档。比较器不是此处的 filterparams 属性。我认为您的比较器功能不会因此而被触发。 https://www.ag-grid.com/angular-grid/filter-number/#custom-number-support


推荐阅读