Как исправить «29/19 / 93_» неправильную дату с «2/9/1993» - PullRequest
0 голосов
/ 07 мая 2019

Возникла проблема с пользовательским mat-datepicker.Дата загружается во внешний интерфейс в неправильном формате и должна иметь вид «ММ / ДД / ГГГГ»

Например, 01.04.1993 выглядит так: «29/19 / 93__»«Данные поступают в интерфейс в формате ISO, который мы хотим отобразить в формате« ММ / ДД / ГГГГ »

Преобразование не работает с загруженными входными данными, однако после нажатия на текстовое поле вводадата отображается в правильном формате

при загрузке с неправильным форматом даты: https://imgur.com/a/XiRyMdt

После нажатия в текстовом поле ввода https://imgur.com/a/gj9D6sG

Мы попытались посмотреть насобытия изменения происходят при создании 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">

TS

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);
      }
    }

  }

1 Ответ

1 голос
/ 08 мая 2019

Выбор реализации даты и настроек формата даты

Datepicker был построен, чтобы быть независимым от реализации даты. Это означает, что его можно настроить для работы с различными реализациями дат. Тем не менее, это также означает, что разработчики должны предоставить соответствующие элементы для средства выбора даты для работы с выбранной им реализацией.

...

Настройка форматов разбора и отображения

Объект MAT_DATE_FORMATS - это просто набор форматов, которые средство выбора даты использует при разборе и отображении дат. Эти форматы передаются в DateAdapter, поэтому вы должны убедиться, что используемые вами объекты формата совместимы с DateAdapter, используемым в вашем приложении.

...

Ссылка: Выбор реализации даты и настроек формата даты

Дополнительные ресурсы:

...