繁体   English   中英

这个大箭头符号如何与 ag-Grid 值格式化程序一起使用?

[英]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)...

我的问题有两个:

  1. 这个大箭头符号如何允许 function 从 ag-Grid 访问params ,即使它没有传递给 function?
  2. 如何在不破坏 ag-Grid 的情况下允许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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM