【问题标题】:Datepicker not displaying date format MM/DD/YYYY angular 4Datepicker 不显示日期格式 MM/DD/YYYY 角度 4
【发布时间】:2019-04-17 04:16:45
【问题描述】:

在我的 Angular 4 项目中,我的 html 中有一个日期选择器。

在html中:

      <mat-form-field class="col-sm-12 nopadding pull-left">
         <input matInput [matDatepicker]="date" placeholder="Please select a date" [(ngModel)]="txtDate">
         <mat-datepicker-toggle matSuffix [for]="date"></mat-datepicker-toggle>
         <mat-datepicker #date></mat-datepicker>
      </mat-form-field>

我可以在我的数据库中选择日期并将其转换为 dd/mm/yyyy 格式。当我检索日期时,我将其转换回 MM/DD/YYYY(我的 datepicker 工作的格式),我从 web api 获取值,在控制台中我可以看到值被正确转换并分配给 ngModel。但它没有显示在日期选择器字段中

在ts文件中

 var dateParts = result.Date.split("/");
 var dateObject = new Date(dateParts [2], dateParts [1] - 1, dateParts [0]);
 this.txtDate=moment(dateObject ).format('MM/DD/YYYY'); -- output of this in console is 11/14/2018 (the desired output)

但日期选择器中没有显示相同的内容。 你能帮忙吗!

【问题讨论】:

    标签: angular datepicker


    【解决方案1】:

    我宁愿建议你创建一个自定义管道:

    [(ngModel)]="txtDate | dateformatter:'MM/DD/YYYY'"   
    
    import {
      Pipe,
      PipeTransform
    } from '@angular/core';
    
    @Pipe({ name: 'dateformatter' })
    export class DateFormatterPipe implements PipeTransform {
      transform(value: number, dateformat: string): string {
        var dateParts = result.Date.split("/");
        var dateObject = new Date(dateParts [2], dateParts [1] - 1, dateParts [0]);
        return moment(dateObject).format(dateformat.toUpperCase());
      }
    }
    

    或者您可以查看date 管道:

    [(ngModel)]="txtDate | date:'shortDate'"   
    

    【讨论】:

      【解决方案2】:

      由于您没有提供最小的可重现代码,我只是浏览了 Angular Material 文档,发现您需要将日期转换为 ISOString 格式。这是来自stackbliz的代码

      【讨论】:

        猜你喜欢
        • 2019-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-05
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多