Angular 如何修复';29/19/93';使用'的日期不正确;2/9/1993';

Angular 如何修复';29/19/93';使用'的日期不正确;2/9/1993';,angular,datepicker,angular-material2,Angular,Datepicker,Angular Material2,自定义mat日期选择器有问题。该日期以不正确的格式加载到前端,应读取为“MM/DD/YYYY” 例如,1993年4月1日是这样的:“1993年29月19日” 数据以ISO格式进入前端,我们希望以“MM/DD/YYYY”格式显示 转换不适用于加载的输入数据,但单击输入文本框后,日期显示格式正确 加载时日期格式不正确: 在输入文本框中单击后 我们已经尝试查看创建dateValue时发生的更改事件以及文本框上发生的单击事件 HTML <input (dateChange)="inputEve

自定义mat日期选择器有问题。该日期以不正确的格式加载到前端,应读取为“MM/DD/YYYY”

例如,1993年4月1日是这样的:“1993年29月19日” 数据以ISO格式进入前端,我们希望以“MM/DD/YYYY”格式显示

转换不适用于加载的输入数据,但单击输入文本框后,日期显示格式正确

加载时日期格式不正确:

在输入文本框中单击后

我们已经尝试查看创建dateValue时发生的更改事件以及文本框上发生的单击事件

HTML

<input (dateChange)="inputEvent($event, 'text')" matInput [matDatepicker]="picker"
         [value]="dateValue"
         [min]="minDate"
         [max]="maxDate"
         [style.width]="inputWidth"
         class="form-control"
         [textMask]="{mask:dateInputMask}"
         [placeholder]="placeholder">
选择日期实现和日期格式设置 datepicker是为日期实现无关而构建的。这意味着它可以与各种不同的日期实现一起工作。然而,这也意味着开发人员需要确保为datepicker提供适当的片段,以便使用他们选择的实现

自定义解析和显示格式 MAT_DATE_FORMATS对象只是datepicker在解析和显示日期时使用的格式的集合。这些格式将传递给DateAdapter,因此您需要确保所使用的格式对象与应用程序中使用的DateAdapter兼容

参考:

额外资源:


无论如何都不是专家,但看一看有一个格式化日期的
\u onBlur()
事件:
\u formatValue
\u dateAdapter.format
其中
\u dateAdapter
来自中的
@Optional()private\u dateAdapter:dateAdapter
,并且
dateAdapter
是从
“@angular/material/core”导入的
dateInputMask = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];

 inputEvent(event: any, source: string) {
    // if full date entered convert to moment and set dateValue to moment

    this.dateValue = event.target.value;

    if (this.dateValue !== null && !this.dateValue.isValid()) {
      this.dateValue = null;
    }
  }

writeValue(value: any) {
    if (value === null) {
      this.dateValue = null;
      return;
    }
    if (value !== undefined) {
      this.dateValue = moment(value, this.inFormat);
      if (this.dateValue == null) {
        this.dateValue = moment(value, this.format);
      }
    }

  }