У меня есть angular материал DatePicker, который имеет 1. Start date
и 2. End date
. Мой end date
зависит от start date
. Будет что-то похожее на эту формулу:
- Дата начала =
2018/09/15
- Дата окончания = минимум
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 без ошибки?