如何禁用ag-grid中agTextColumnFilter的输入自动裁剪功能
问题原因
ag-grid 25.0.0 企业版的agTextColumnFilter存在已知实现bug:内置的输入值首尾空白裁剪逻辑没有正确读取列级配置的filterParams.trimInput参数,即使显式传入trimInput: false,默认裁剪逻辑仍会执行。该配置读取问题在25.3.0及之后的25.x补丁版本中才被修复。
解决方案
根据你是否可以升级依赖,选择对应方案即可彻底关闭自动裁剪:
- 优先方案:升级ag-grid到25.3.0+的25.x系列版本
升级后你之前写的filterParams:{trimInput: false}配置会正常生效,不需要额外修改其他业务代码,是成本最低、最稳妥的解决方式。 - 固定25.0.0版本的兼容方案
受版本bug影响,列级单独设置的trimInput: false不会被识别,你需要先在全局gridOptions的defaultColDef中统一声明该配置,同时重写内置的文本比较逻辑,绕过硬编码的裁剪处理,参考配置如下:
// 全局gridOptions配置 const gridOptions = { defaultColDef: { filterParams: { trimInput: false, // 全局声明关闭裁剪,25.0.0仅识别该层级的配置 // 重写文本比较逻辑,避免内置逻辑对输入值做trim textCustomComparator: (filterType, cellValue, filterText) => { const cellValStr = cellValue == null ? '' : String(cellValue); const filterValStr = filterText == null ? '' : String(filterText); // 以下匹配逻辑可根据你的业务需求调整,示例为包含匹配 switch(filterType) { case 'contains': return cellValStr.indexOf(filterValStr) >= 0; case 'equals': return cellValStr === filterValStr; case 'startsWith': return cellValStr.startsWith(filterValStr); case 'endsWith': return cellValStr.endsWith(filterValStr); default: return cellValStr.indexOf(filterValStr) >= 0; } } } }, // 其余原有grid配置 columnDefs: [ // 列定义不需要再单独给文本列重复设置trimInput ] }
临时方案说明
你当前使用的debounceMs参数仅能延迟过滤触发的时机,并没有关闭内置的裁剪逻辑,当用户输入停顿超过设置的防抖时长后,首尾空格依然会被自动清除,无法满足首尾空格精确匹配的需求,不建议长期使用。
内容的提问来源于stack exchange,提问作者Ramesh T
相关产品推荐
相关产品推荐

