У нас есть вопрос об использовании Validators.required или его понимании для нашей формы.
Мы хотим, чтобы вводимый текст был обязательным (Validators.required).Его значение по умолчанию пусто ('').Пользователь должен вставить в него текст.
Проблема в том, что что-то играет Validators.required, когда мы приходим на страницу.Другими словами, входной текст уже выделен красным, помечен как недействительный, как только страница обновляется.
Например, то, что мы пытаемся сделать, здесь https://www.primefaces.org/primeng/#/validation,, чтобы сделать поле 'Имя *:' недопустимым, мы должны сфокусировать поле, напечатать какой-нибудь материал, стереть всеи потеря фокуса.
Мы используем Angular 7 и PrimeNG.Если мы скопируем / пропустим исходный код из PrimeNG, у нас возникнет та же проблема.Но если мы заменим, например, Validators.required Validators.pattern ('\ d {4}'), все будет работать нормально: пользователь должен сначала поместить некоторые данные во входные данные, и только после этого активируется Validators.становятся недействительными сразу после инициализации из this.fb.group (...).
ngOnInit(): void {
this.myform = this.fb.group({
'minBreak': new FormControl('', Validators.required)
});
}
<div style="display: flex; width: 28em;">
<span style="margin-right: 1em;">
Min break
</span>
<input type="text" pInputText formControlName="minBreak" />
</div>
Проблема Как только this.myform = this.fb.group({
'minBreak': new FormControl('', Validators.required)
});
завершена, форма переходит в статус= НЕВЕРНО.Мы ожидаем, что он будет действительным.
Вопрос Почему наша форма становится недействительной после ее инициализации?Это нормально для запуска Validators по умолчанию?Если так, то почему на примере здесь https://www.primefaces.org/primeng/#/validation это не так?
Stackblitz https://stackblitz.com/edit/angular-pnyiy3 в консоли, мы можем видеть, что статус формыНЕВЕРНО.
Спасибо за вашу помощь:)
NB Для тех, кто использует JHipster, они помещают
.ng-invalid:not(form) {border-left: 5px solid red;}
в global.scss,После удаления все работает нормально ...