Форматирование даты с помощью igx-date-picker - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть шаблон Angular, который реализует компонент IgxDatePickerComponent. У меня возникла проблема при попытке отформатировать дату в британском формате как для раскрывающейся части элемента управления, так и для части ввода.

Вот мой код для элемента управления

 <igx-date-picker  #dateFromDatePicker mode="dropdown" locale="en-GB"
             cancelButtonLabel="close" todayButtonLabel="today">
              <ng-template igxDatePickerTemplate let-openDialog="openDialog" let-value="value"
                  let-displayData="displayData">
                  <igx-input-group type="border">
                      <igx-prefix (click)="openDialog(dropDownTarget)">
                          <igx-icon>today</igx-icon>
                      </igx-prefix>
                      <label igxLabel for="dropDownTarget">Start Date</label>
                    <input #dropDownTarget  class="igx-date-picker__input-date" igxInput [value]="displayData"
                          [igxMask]="'00/00/0000'" [placeholder]="'dd/mm/yyyy'"  (blur)="changeStartDate($event)"/>
                  </igx-input-group>
              </ng-template>
          </igx-date-picker>

И код компонента:

  changeStartDate(event) {
    const input = event.target.value;
    if (input !== '') {
      const parsedDate = new Date(input);
      if (this.isDateValid(parsedDate)) {
        this.startDate = parsedDate;
      }
    } else {
      this.dateFromDatePicker.deselectDate();
      this.startDate = input;
    }
  }

Когда событие размытия запускает event.target.value равно «29/04/2020», когда оно попадает в следующую строку кода.

const parsedDate = new Date(input);

Результатом parsedDate является "недопустимая дата".

Мне нужно преобразовать "29/04/2020" в действительную дату. Я пробовал разные трубы, но ни одна из них не работает.

1 Ответ

0 голосов
/ 28 апреля 2020

Вам необходимо отформатировать displayDate строку, чтобы преобразовать ее в действительную дату

        const parsedDate = new Date(input.split('/').reverse().join("-"));

. Это приведет к конвертации "29/04/2020" в "2020-04-29", а затем будет приемлемо для Date .

...