Мне нужно установить минимальную и максимальную даты для Kendo Angular DatePicker. Это довольно просто, используя [(max)]="maxDate" and [(min)]="minDate"
, и это работает, когда вы используете мышь и щелкаете DatePicker.
Проблема в том, что при использовании ввода с клавиатуры пользователь может выбирать даты за пределами минимальной и максимальной дат. У меня есть событие valueChange, но оно срабатывает при каждом нажатии клавиши. Я не могу определить, когда пользователь завершил ввод всей даты, а затем просто установил дату как минимум или максимум по мере необходимости. Я мог бы установить событие onFocus для следующего элемента управления, но это было бы непонятно.
Это фрагмент HTML-кода:
<kendo-datepicker
id="dpFirstPaymentDate"
(valueChange)="onFirstPaymentDateChange($event)"
[(value)]="firstPaymentDate"
[(max)]="maxDate"
[(min)]="minDate"
[(focusedDate)]="firstPaymentDate"
[rangeValidation] = "true"
title="First Payment Date">
</kendo-datepicker>
Код angular таков:
protected onFirstPaymentDateChange(/*event: EventEmitter*/ value: Date): void {
if (value > this.maxDate) {
// This does not appear to be working
value = new Date(this.maxDate);
this.firstPaymentDate = new Date(this.maxDate);
}
else if (value < this.minDate) {
value = new Date(this.minDate);
this.firstPaymentDate = new Date(this.minDate);
}
this.maturityDate = new Date(value);
this.maturityDate.setMonth(value.getMonth() + this.term);
}
Полный пример плунжера находится здесь: пример плунжера