У меня есть текущий шаблон:
<input type="text" class="datepicker" name="my_date" placeholder="mm/dd/yyyy" #myDate="ngModel" [(ngModel)]="myDate" id="my_date">
<div class="error_message" *ngIf="myDate.errors?.invalidDate">
Please enter valid date
</div>
У меня есть следующий код в onInit:
setTimeout(function () {
$('.datepicker').datepicker({
autoclose: true,
dateFormat: 'MM/dd/yyyy'
}).on('hide', function(e) {
$('.datepicker').blur();
});
}, 10);
А при сохранении компании у меня логика проверки:
if (validateDate(this.myDate) == false) {
myFormDirective.form.controls['my_date'].setErrors({'invalidDate': true});
}
Проблема в том, что когда дата недействительна, дата выбирается сегодня вместо даты, когда
ONBLUR. Для объяснения вопроса я приведу 2 сценария:
1. 03/10/1800 является недействительной датой (менее 1900), и при срабатывании onblur ошибка отображается правильно.
2. 32.01.2002 не является действительной датой, но в этом случае средство выбора даты вместо этого выбирает другую действительную дату в 2002/01/2002 вместо отображения ошибки.
Есть идеи, как убедиться, что проверка происходит при размытии?