使用 angular 2 设置 devextreme DataGrid 中日期列的格式

mar*_*ler 3 devexpress typescript devextreme angular

我的 angular2 项目中有一个 devextreme 数据网格。但是,具有日期数据类型的列仅以以下格式显示完整的 javascript 日期:yyyy-MM-ddTHH:mm:ss。我想将此列的格式设置为对用户更友好的格式,例如 dd.MM.yyyy(欧洲风格)。

但是直到现在我所有设置日期格式的尝试都没有成功。

以下是我目前在组件模板中的内容:

    <dx-data-grid [dataSource]="tasks">
        <dxi-column dataField="barcode" ></dxi-column>
        <dxi-column dataField="receiptDate" format="shortDate">
            <dxo-format type="shortDate"></dxo-format> 
        </dxi-column>
    </dx-data-grid>
Run Code Online (Sandbox Code Playgroud)

不幸的是,设置格式的类型根本不会改变任何东西——我仍然得到这个未格式化的 JS 日期字符串。而且我在控制台中也没有任何异常。

mar*_*ler 6

一段时间后,我自己找到了答案。问题是您必须将列的 dataType 属性设置为日期 - 否则日期格式设置将被忽略。这是有效的:

<dx-data-grid [dataSource]="tasks">
    <dxi-column dataField="barcode" ></dxi-column>
    <dxi-column dataField="receiptDate" dataType="date" format="shortDate"></dxi-column>
</dx-data-grid>
Run Code Online (Sandbox Code Playgroud)


小智 5

上面提到的答案工作正常,如果你想使用管道(可能是为了一些额外的格式或任何东西)你可以使用 cellTemplate ,下面是代码片段

    <dx-data-grid [dataSource]="assessments" [height]="gridHeight" [hoverStateEnabled]="true" 
                width="100%">
                <dxi-column dataField="assessDate" dataType="date" [caption]="assessDate" cellTemplate="dateCell"></dxi-column>
                <div *dxTemplate="let cellData of 'dateCell'">
                    {{cellData.value | date: 'dd-MMM-yy'}}
                </div>
            </dx-data-grid>
Run Code Online (Sandbox Code Playgroud)