Angular Выражение DatePicker материала изменилось после того, как была проверена ошибка с min и max - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть angular материал DatePicker, который имеет 1. Start date и 2. End date. Мой end date зависит от start date. Будет что-то похожее на эту формулу:

  1. Дата начала = 2018/09/15
  2. Дата окончания = минимум StartDate+1day, максимум StartDate + 2 months.

В начале init я устанавливаю эти значения, и все работает нормально, но затем, когда я изменяю дату начала на более чем 2 месяца, я получаю эту ошибку:

ExpressionChangedAfterItHasBeenCheckedError: Выражение изменилось после его проверки. Предыдущее значение для 'ng-valid': 'false'. Текущее значение: 'true'.

Вот мой код:

 startDateChange(event) {
      this.formGroup.get(this.LocationFields.endDate).setValue(moment(event).add(1, 'days').format());
      const afterOneDay = moment(event).add(1, 'days').format();
      this.dropOffDateMax = moment(event).add(2, 'months').format();
      this.dropOffDateMin = afterOneDay;
  }

html:

<input readonly [style.width.px]="width"  (click)="picker.open()" class="form-control datepickerInput {{inputClasses}}"
  [class.is-invalid]="control.invalid" matInput [formControl]="control" [matDatepicker]="picker" [placeholder]="placeholder"
  autocomplete="off" [min]="min" [max]="max" (dateChange)="changeEvent($event); isoString && onInputChange()">
  <mat-datepicker-toggle [disableRipple]="true" matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker startView="year"></mat-datepicker>

Если я уберу эти строки:

  const afterOneDay = moment(event).add(1, 'days').format();
  this.dropOffDateMax = moment(event).add(2, 'months').format();
  this.dropOffDateMin = afterOneDay;

Нет ошибок;

Как изменить минимальное и максимальное значения DatePicker без ошибки?

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