【问题标题】:Angular matdatepicker wrong date printed角度 matdatepicker 打印错误的日期
【发布时间】:2019-10-24 22:04:33
【问题描述】:

我这样使用matDatePicker:

 <mat-form-field class="col">
    <input #pickerDal matInput [matDatepicker]="pickerDal" placeholder="Dal" 
    (dateChange)="fromDate('change', $event)" formControlName="formDataDal">
    <mat-datepicker-toggle matSuffix [for]="pickerDal"></mat-datepicker-toggle>
    <mat-datepicker #pickerDal></mat-datepicker> 
  </mat-form-field>

并在我的 .ts 中声明:

formDataDal: new FormControl()

在我决定在日期选择器中添加默认显示值之前,它一直正常工作。我所做的是在input 标签和.ts 文件中添加[(ngModel)]="dal_default" 并初始化dal_default:

this.dal_default = new Date();

现在,如果我尝试使用 formControlName 或 dal_default 变量打印 Date 的值,我会得到一个奇怪的格式字符串。特别是,如果我打印显示的默认日期,它会正确打印为日期,但是如果我更改日期,我会得到一个字符串(我相信它代表毫秒?)。例如,以下是我从日期 12/12/2018 得到的:

1543618800000

我唯一做的另一件事是将 app.module.ts 中的日期格式更改为 DD/MM/YYYY 格式的日期:

import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material';
import { MomentDateModule, MomentDateAdapter } from '@angular/material-moment-adapter';


export const MY_FORMATS = {
  parse: {
    dateInput: 'DD/MM/YYYY',
  },
  display: {
    dateInput: 'DD/MM/YYYY',
    monthYearLabel: 'MM YYYY',
    dateA11yLabel: 'DD/MM/YYYY',
    monthYearA11yLabel: 'MM YYYY',
  },
};

和内部提供者:

 { provide: MAT_DATE_LOCALE, useValue: 'it' }, 
    { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
    { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS }

matdatepicker 以我想要的格式正确显示日期。我不认为这是问题所在,但不能 100% 确定。
有什么问题?

【问题讨论】:

    标签: angular typescript datepicker angular-material-7 formatdatetime


    【解决方案1】:

    您能否为此创建 stackblitz 示例,这样会更好地了解您在做什么,并且人们会更容易地帮助您?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多