Я переделываю какой-то старый проект со следующим управлением на основе шаблона:
<input #ctrl="ngModel"
type="text"
placeholder="Nummer"
id="num"
minlength="6"
maxlength="6"
pattern="(?!0{6})[0-9]{6}"
[(ngModel)]="datenProduct.num"
(ngModelChange)="onNumChange(ctrl)">
И соответствующий обработчик значения:
onNumChange(ctrl: NgModel) {
if (ctrl.valid || ctrl.pristine || ctrl.untouched || ctrl.value === '') {
console.log('True')
this.lvbControl.lvbEntered = true;
} else {
console.log('False')
this.lvbControl.lvbEntered = false;
}
}
По сути, требование заключается в следующем:
- число является необязательным
- , но если оно указано, должно быть 6-значным
- , но если оно указано, оно не должно быть равно
000000
При первом вызове onNumChange
действительность элемента управления (доступного через ctrl.valid
) всегда заявляет, что элемент управления действителен, даже если он не соответствует минимальной длине и шаблонному совпадению.
Есть идеи, что происходит?