Я борюсь со сбросом ошибок ngForm
после нажатия любой кнопки в форме.Кажется, что formDirective.submitted
переключается в true, даже после вызова метода resetForm()
.Я не понимаю, почему вызов formDirective.resetForm()
не дает ожидаемого результата.
Шаблон:
<button mat-raised-button color="primary" (click)="testClick()"></button>
Компонент:
@ViewChild(FormGroupDirective) queryFormDir: FormGroupDirective;
...
testClick() {
this.queryFormDir.resetForm();
}
Нажатие TestClick
Кнопка приводит к состоянию formDirective.submitted
в true
, что неверно из того, что я могу сказать.
Согласно Angular API метод resetForm()
является правильным для сбросаsubmitted
состояние, но у меня нет ожидаемого поведения.
Я также попытался поиграться с ErrorStateMatcher
и заметил, что когда я опускаю isSubmitted
из приведенного ниже, сообщения об ошибках валидатора не отображаютсяпри отправке вообще, что не то, что я хочу, но показывает связь между сообщениями об ошибках валидатора и состоянием submitted
, которое является моей проблемой.
export class MyErrorStateMatcher implements ErrorStateMatcher {
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
const isSubmitted = form && form.submitted;
return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));
}
}
Моя версия Angular - 7.2.2
Как мне сбросить форму, чтобы сообщения об ошибках валидатора были скрыты после нажатия кнопки в форме?
Редактировать:
В приведенном примереупрощенная версия моей ситуации.Проблема возникает после того, как форма отправлена правильно в первый раз с действительными данными.Форма рассчитана на несколько заявок.После первой отправки запускаются валидаторы, что не удобно для пользователя.Я хочу, чтобы валидаторы не запускались после завершения действительной отправки и сброса формы.
Редактировать 2:
В соответствии с запросом stackblitz .