为啥 ag-grid 过滤器比较器没有执行?
Posted
技术标签:
【中文标题】为啥 ag-grid 过滤器比较器没有执行?【英文标题】:Why is the ag-grid filter comparator not executing?为什么 ag-grid 过滤器比较器没有执行? 【发布时间】:2021-09-05 10:04:34 【问题描述】:我目前使用的是 Angular 10.2 版和 ag-grid
25.3.0 版
遵循 ag-grid here 的日期列自定义过滤器文档后,我决定将其应用于数字列并稍作修改。基本上,如果用户过滤一个小于 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
。
我的问题是比较器功能甚至没有触发。控制台中没有控制台日志,即使它是比较器函数的第一行。我在 *** 上检查了 ag-grid 的 GitHub 问题和其他问题,但没有成功。
存在一些 *** 问题,但这些问题与列值比较器有关,而不是 filterParams
中的比较器。任何帮助,将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:如果您想使用 agNumberComparator,您可以查看以下文档。 比较器不是此处的 filterparams 属性。我认为您的比较器功能不会因此而被触发。 https://www.ag-grid.com/angular-grid/filter-number/#custom-number-support
【讨论】:
为了以问题中描述的方式过滤数字,您是否建议我使用实现自定义过滤器接口的自定义组件?我真的很想保持过滤器的外观和感觉与 ag-grid 默认过滤器相同以上是关于为啥 ag-grid 过滤器比较器没有执行?的主要内容,如果未能解决你的问题,请参考以下文章