【问题标题】:mat date picker selected date is not matching垫日期选择器选择的日期不匹配
【发布时间】:2018-10-28 08:53:00
【问题描述】:

从 mat 日期选择器中选择的日期与其在反应形式中的值不匹配。

ngOnInit() {
    this.findForm = this._fb.group({
      date: ['', Validators.required]
    });
}

在模板中,

<mat-form-field [formGroup]="findForm">
  <input matInput formControlName="date" [matDatepicker]="picker" placeholder="Choose a date">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

<pre>{{this.findForm.get('date').value |json }}</pre>

我在 stackblitz 上有完整的工作 code

选择一个日期,您会看到所选日期和它在反应形式中的值不一样。

【问题讨论】:

标签: angular angular-material angular-reactive-forms


【解决方案1】:

如 cmets 中所述,来自 MatDatePicker 的日期采用 UTC 格式。但是您可以使用以下方法将它们转换为本地格式:

formatDate() {
  var date = new Date(`${this.findForm.value.date} UTC`);
  return date.toString();
}

在模板中:

<mat-form-field [formGroup]="findForm">
  <input matInput formControlName="date" [matDatepicker]="picker" placeholder="Choose a date">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

<pre>{{ formatDate() }}</pre>

这里有一个Sample StackBlitz 供您参考。

【讨论】:

  • @anonymous,不工作吗?没有按照你想要的方式工作?还是一般不打开/不工作?
  • 日期为空。
  • 最初为空,因此显示无效日期。但是当你选择一个日期时,它会显示正确的日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
  • 2014-04-22
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
相关资源
最近更新 更多