Ag-grid - 具有自定义单元格编辑器时是不是忽略值解析器?
Posted
技术标签:
【中文标题】Ag-grid - 具有自定义单元格编辑器时是不是忽略值解析器?【英文标题】:Ag-grid - Is value parser ignored when having custom cell editor?Ag-grid - 具有自定义单元格编辑器时是否忽略值解析器? 【发布时间】:2019-05-15 16:56:44 【问题描述】:我将 ag-grid 与 Angular v7 一起使用,但我在值解析器方面遇到了一些问题,我想将其与自定义单元格编辑器一起使用。
当我声明自定义单元格编辑器时,值解析器似乎被简单地忽略了。我将它硬编码为始终返回相同的值,无论参数如何,它都会这样做 - 当我从列定义中删除 cellEditor 时。一旦声明了自定义编辑器,解析器似乎不再工作 - 它对保存的值没有任何影响。它甚至没有被调用 - 我试图在其中记录一些内容,但当有自定义编辑器时,它在控制台中不可见。
如果我错了,请纠正我,但这不是预期的行为,是吗?文档中的正弦值解析器和设置器在单元格编辑文章中提到,所以我认为它们应该一起工作。
【问题讨论】:
【参考方案1】:在实现自定义单元格编辑器时,我有完全相同的疑问,其中 valueParser 似乎被网格完全忽略了。
因此,在查看了 ag-grid 文档后,我找到了解决方案。
提供给单元格编辑器的agInit
方法的params
对象具有以下属性。
parseValue: (value: any) => any;
此函数与您在列的colDef 中编写的ValueParser
相同。
在自定义单元格编辑器的 getValue
方法内对返回的数据调用 parseValue()。
【讨论】:
【参考方案2】:@abd995 正确的是 parseValue 指向列定义中的函数。但是,如果您按照文档的方式遵循接口定义,则无法从 getValue 函数中调用 parseValue,因为它们提供的示例无济于事,例如xxx.prototype.getValue = function....
相反,在 init 函数中,您需要在其中声明 getValue
调用以访问 params 对象。
例如:
CodeValueEditor.prototype.init = function (params)
this.container = document.createElement('input');
this.container.classList.add('ag-cell-edit-input');
this.container.value = params.value;
this.getValue = function ()
var parseResult = params.parseValue(this.container.value);
if (parseResult)
return this.container.value;
return params.value;
;
通过检查结果,您可以返回新值 - 或者如果失败则通过返回 params.value
返回原始值。
我还没有对它进行广泛的测试,但它似乎可以工作,并且允许我使用自定义编辑器并利用列定义的值解析器。
希望这会有所帮助! 附言。您可能需要调整上述“this”的范围。
【讨论】:
以上是关于Ag-grid - 具有自定义单元格编辑器时是不是忽略值解析器?的主要内容,如果未能解决你的问题,请参考以下文章
在 ag-grid 中使用自定义单元格渲染器时无法读取未定义的属性“导航”
用 tinymce 编辑器替换单元格的 ag-grid 编辑器