如何在ag-grid上显示数据之前格式化数据

Ker*_*092 5 ag-grid ag-grid-ng2

我刚刚发现了ag-grid.我在angular2 +上使用它并从api加载数据.其中一个字段是日期,但它是ISO格式.我一直在尝试格式化它,有没有办法做到这一点,是否可以添加管道或其他方式?通常我这样做{{someISODate | 日期:'dd.MM.yyyy HH:mm'}}.在显示之前,我是否真的需要在组件中手动格式化它?此外,我想知道是否可以在一列下添加两个字段.为什么?好吧,我有专栏作者,并且在数据中我从api获得了author.firstname和author.lastname,现在我想在同一列中显示这两个字段.任何提示或示例都受到欢迎.

columnDefs = [
    {headerName: 'Datum kreiranja', field: 'createdAt' }, //<-- wanna format it
    {headerName: 'Vrsta predmeta', field: 'type.name' },
    {headerName: 'Opis', field: 'description'},
    {headerName: 'Kontakt', field: 'client.name'},
    {headerName: 'Autor', field: 'author.firstname'}, //<-- wanna display author.lastname in same cell
    {headerName: 'Status', field: 'status.name'}
];
Run Code Online (Sandbox Code Playgroud)

Par*_*osh 18

您可以使用cellRenderervalueFormatter库来完成此操作.

 {
      headerName: 'Datuk kreiranja', field: 'createdAt',
      cellRenderer: (data) => {
          return moment(data.createdAt).format('MM/DD/YYYY HH:mm')
      }
 }
Run Code Online (Sandbox Code Playgroud)

如果你不想使用moment,那么下面是你如何做到这一点.

cellRenderer: (data) => {
     return data.value ? (new Date(data.value)).toLocaleDateString() : '';
}
Run Code Online (Sandbox Code Playgroud)

对于moment场地,

cellRenderer: (data) => {
     return data.author.firstname + ' ' + data.author.lastname;
}
Run Code Online (Sandbox Code Playgroud)

参考:ag-grid:细胞渲染


小智 10

您可以使用 valueFormatter

{headerName: 'Datuk kreiranja', field: 'createdAt', valueFormatter: this.dateFormatter},
Run Code Online (Sandbox Code Playgroud)

创建一个小函数:

dateFormatter(params) {
  return moment(params.value).format('MM/DD/YYYY HH:mm');
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,在这种情况下,格式化程序是一个更好的方法 - 请查看 [ValueFormatter 与 CellRenderer](https://www.ag-grid.com/javascript-grid-value-formatters/#value-formatter-vs -单元格渲染器) (2认同)