日期选择器不显示日期格式MM / DD / YYYY角度4

时间:2018-11-14 08:46:35

标签: angular datepicker

在我的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(我的日期选择器工作的格式)时,我从Web api获取了值,并且在控制台中我可以看到该值已正确转换并分配给ngModel。但它不会显示在datepicker字段中

在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)

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

2 个答案:

答案 0 :(得分: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'"   

答案 1 :(得分:0)

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

的代码