![](/img/trans.png)
[英]Why Apply Button does not Work in Ag-grid Filter (agSetColumnFilter)?
[英]How does this big arrow notation work with ag-Grid value formatter?
我在 angular 项目中创建了一个服务GridFormatterService
,其中包含 static 方法,用于 ag-Grid 中的值格式化。
在项目中的一些 ag-Grids 中,我需要将列定义valueFormatter
中的参数displayDateAndTime
(一个 boolean 标志)传递给我的服务,以决定值的格式设置方式。
以正常方式执行此操作,例如 -
public columnDefs = {
... , valueFormatter: GridFormatterService.dateFormatter(params, displayDateAndTime), ...
}
不起作用。 我在这里找到了解决这个问题的答案,所以我在dateFormatter
中实现了它,如下所示:
public static dateFormatter(displayDateAndTime: boolean = false) {
return (params: ValueFormatterParams) => {
if (params.value) {
if (!displayDateAndTime) {
return new Date(params.value).toLocaleDateString('en-GB');
} else {
return moment(params.value).format('DD/MM/YYYY HH:mm');
}
}
}
}
但是这个实现只有在传入了displayDateAndTime
参数的情况下才有效。只有在某些情况下才需要传入该参数,而当你不传入参数时(即使你设置了默认值或者允许它为null),它会破坏dateFormatter
并导致代码作为字符串显示在 ag-Grid 中。 在这种情况下,我在网格中看到的是params => if (params.value)...
我的问题有两个:
params
,即使它没有传递给 function?dateFormatter
为我的标志设置默认值,如果不能,是否还有另一种将参数传递给我缺少的valueFormatter
的方法?谢谢你的帮助!
我就是这样做的。 对其进行了测试,并且有效。
columnDefs = [
...
{
field: 'someField',
valueFormatter: (params: ValueFormatterParams) =>
GridFormatterService.dateFormatter(params, true),
},
{
field: 'otherField',
valueFormatter: (params: ValueFormatterParams) =>
GridFormatterService.dateFormatter(params),
},
...
]
这是下面的服务。 请注意告诉typescript一个属性可能存在也可能不存在,你必须使用问号。
即函数(a:参数,b?:布尔值)
class GridFormatterService {
...
public static dateFormatter(
params: ValueFormatterParams,
displayDateAndTime?: boolean
) {
if (params.value) {
if (!displayDateAndTime) {
return 'Format A';
} else {
return 'Format B';
}
}
}
...
}
这是一个工作示例的链接: https://stackblitz.com/edit/angular-ag-grid-formatter?file=src%2Fapp%2Fapp.component.ts
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.