Сообщения проверки angular появляются после формы reset ()

Я пытаюсь сделать форму понятной без сообщений об ошибках проверки после вызова reset().

моя форма выглядит чистой при загрузке, и этого следовало ожидать:  форма, как при загрузке страницы, ошибок проверки нет однако, если пользователь нажал кнопку регистрации и произошла ошибка, я запускаю метод form.reset() . Я ожидаю, что форма будет выглядеть так, как на картинке выше, поскольку на ощупь, нетронутые, грязные реквизиты все такие же, как при первоначальной загрузке формы. но вместо этого он очищает значения, но показывает мне ошибку проверки. форма с ошибками проверки Может ли кто-нибудь помочь мне вернуть ее в исходное состояние, появляется четкая форма без ошибок проверки? Это реактивная форма. дайте мне знать, если вам понадобится дополнительная информация. Спасибо!


person Roni Axelrad    schedule 25.11.2018    source источник


Ответы (4)


Похоже, вы используете Angular Materials. Если это так, вы также должны сбросить FormGroupDirective, только сброса FormGroup недостаточно.

private registerForm(fData: any,formDirective: FormGroupDirective): void {
    formDirective.resetForm();
    this.RegForm.reset();
}

<form [formGroup]="RegForm" #formDirective="ngForm" 
   (ngSubmit)="registerForm(RegForm,formDirective)">
person Victor Rodniansky    schedule 25.11.2018
comment
Спасибо !! это сработало. Я не знал о дополнительном шаге при использовании углового материала. - person Roni Axelrad; 26.11.2018

Вы используете что-то подобное?

// Reactive Form

constructor(private _builder:FormBuilder) {
    this.createForm();
}

createForm() {
    this.form = this._builder.group({
        key: this.value,
    });
}

// Option 1
resetForm() {
    this.form.reset();
}

// Option 2 - create form again
resetForm() {
    this.createForm()
}

// Template Form

---- HTML ----
<form #myForm="ngForm"></form>

---- TS ----
@ViewChild('myForm') myForm;

resetForm() {
   if (this.myForm) {
      this.myForm.reset();
   }
}
person Mishal    schedule 25.11.2018
comment
Спасибо за предложение Мишал. Первый ответ у меня сработал. - person Roni Axelrad; 26.11.2018

Вы можете использовать метод .markAsPristine() вашей формы для сброса проверки:

this.RegForm.reset();
this.RegForm.markAsPristine();
person Dmytro Tolkachov    schedule 15.11.2019

person    schedule
comment
Хотя этот фрагмент кода может решить вопрос, включение объяснения действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, и эти люди могут не знать причины вашего предложения кода. - person rene; 02.06.2019