ag-grid を発見しました。私はangular2 +でそれを使用しており、APIからデータをロードしています。フィールドの1つは日付ですが、ISO形式です。私はそれをフォーマットしようとしました、それを行う方法はありますか、パイプまたは他の方法を追加することは可能ですか?通常、私はこのようにします{{someISODate |日付: 'dd.MM.yyyy HH:mm'}}。表示する前にコンポーネントで手動でフォーマットする必要がありますか?また、1つの列の下に2つのフィールドを追加することが可能かどうかも考えていました。どうして?さて、私は列の作者がいて、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'}
];
これを行うには、cellRenderer
およびmoment
ライブラリを使用します。
{
headerName: 'Datuk kreiranja', field: 'createdAt',
cellRenderer: (data) => {
return moment(data.createdAt).format('MM/DD/YYYY HH:mm')
}
}
moment
を使用したくない場合は、次の方法で実行できます。
cellRenderer: (data) => {
return data.value ? (new Date(data.value)).toLocaleDateString() : '';
}
Author
フィールドについても、
cellRenderer: (data) => {
return data.author.firstname + ' ' + data.author.lastname;
}
Angularの場合、moment.jsなしでこれを実行したい場合は、以下のようなことを試すことができます:
import { Component, OnInit, Inject, LOCALE_ID } from '@angular/core';
import { formatDate } from '@angular/common';
@Component({
selector: 'app-xyz'
})
export class xyzComponent implements OnInit {
constructor( @Inject(LOCALE_ID) private locale: string ) {
}
columnDefs = [
{headerName: 'Submitted Date', field: 'lastSubmittedDate', cellRenderer: (data) => {
return formatDate(data.value, 'dd MMM yyyy', this.locale);
}];
}
このコンポーネントは角度/共通のフォーマット日付を使用しています
(日付の書式設定のための実用的で最適化されたソリューションはこちらです!)
Angular 8、日付が2019-11-16T04:00:00.000Zのような動的データでテストされました。Ag-gridでvalueFormatterを使用する場合、「field:」を含める必要はありません。注文日'"。
Ragavan Rajanの回答にも従います。したがって、angular CLIにmoment.jsをインストールする必要があります。
作業コードとインストールは以下のとおりです。
//Install moment.js in angular 8 cli.(no need of --save in latest versions
npm install moment
//In your component.ts
import * as moment from 'moment';
//Inside your colDef of ag-grid
{
headerName: "Effective Date",
field: "effectiveDate",
valueFormatter: function (params){
return moment (params.value).format ('DD MMM, YYYY');
}
/*
* This will display formatted date in ag-grid like 16 Nov, 2019.
* field name's value is from server side.(column name).
*/
valueFormatter
を使用できます
{headerName: 'Datuk kreiranja', field: 'createdAt', valueFormatter: this.dateFormatter},
小さな関数を作成します。
dateFormatter(params) {
return moment(params.value).format('MM/DD/YYYY HH:mm');
}