Почему очистка ввода даты с использованием Angular дает разные результаты? - PullRequest
0 голосов
/ 13 октября 2019

В моем проекте Angular есть компонент, который показывает график до определенной даты, выбранной пользователем. Значение во введенной дате должно быть действительной датой. Таким образом, при нажатии кнопки x на панели выбора даты она должна перейти к текущей дате и не быть пустой.

Это HTML-код:

<input class="form-control input-sm" type="date" name="endDate" 
        [ngModel]="endDate | date:'yyyy-MM-dd'" (ngModelChange)="setEndDate($event);">

и следующий код в компоненте. Файл TS:

endDate = new Date();

setEndDate(newValue) {

  if(newValue) {
    this.endDate = newValue;
    return;
  }

  this.endDate = new Date();
}

Я не могу понять, что иногда это работает, а иногда нет. В частности, когда дата в средстве выбора не является текущей датой, нажатие на x приводит к тому, что она становится текущей датой, как и предполагалось. Если в средстве выбора указана текущая дата, она становится пустой и отображает mm/dd/yyyy. Он должен просто оставаться на текущей дате.

Из тестирования видно, что значение устанавливается, но сборщик по какой-то причине не обновляется. Я пытался изменить привязку, но это только привело к ее полной поломке. Любой, который можно пролить на то, почему это работает иногда, но не в других случаях, будет оценен.

stackblitz: https://stackblitz.com/edit/angular-oep55t

1 Ответ

0 голосов
/ 13 октября 2019

Я использую viewChild для установки значения nativeElement. Похоже, endDate никогда не проходил через введенную дату после сброса значения. Я использовал datePipe в файле ts, чтобы получить форматированную дату. Не забудьте добавить datepipe в провайдеры в вашем модуле.

https://stackblitz.com/edit/angular-268qje

Дайте мне знать, если это нормально для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...