我在使用 ag-grid 和设置过滤器时遇到问题。
这是我们过滤器参数的快照:
filterParams: {
values: this.filterValuesFromBackend,
valueFormatter: (params: ValueFormatterParams) => this.translate(params.value)
}
据我所知排序是使用未格式化的值(枚举值)完成的,之后发生值格式化(此处:翻译)。
重要提示:我们的表是服务器端表,我们在数据库查询中使用过滤器。 仅仅使用已经翻译的文本作为过滤器集值是没有解决方案的:我们需要来自集过滤器的原始枚举值用于之后的数据库过滤。
我们目前的解决方法是使用一个比较器,它处理许多额外的翻译只是为了排序:
filterParams: {
...
comparator: (a: string, b: string) => {
const textA = this.translate(a);
const textB = this.translate(b);
return textA.localeCompare(textB);
}
},
这是一个简单的例子:
我错过了什么吗?使用 valueFormatte 是否适合翻译任务?
我面临着同样的问题。
对于这种特殊情况,我只是尝试将此列从 valueFormatter 切换到 valueGetter,它似乎可以解决问题。
我不需要原始数据,所以我很好。如果您确实需要它,我想您可以使用带有原始数据的第二个隐藏列。