問題

テンプレートでは、ボタンを押して開かれたフォームがあります。

      <form [formGroup]="person"
          (ngSubmit)="onSubmitNewPerson()"
          #formDirective="ngForm">

            <mat-form-field>
                <input matInput formControlName="firstName" required>
            </mat-form-field>

            <mat-form-field>
                <input matInput formControlName="lastName" #last required>
            </mat-form-field>
</form>
 

コンポーネントにはこのコードがあります -

   @ViewChild('formDirective') formDirective: FormGroupDirective;

 this.person = this.formBuilder.group({
            lastName: ['', Validators.required],
            firstName: ['', Validators.required]
        });
 

ボタンを閉じた後、私はこの機能を実行します -

    this.formDirective.resetForm();//hack that I saw in some question
    this.person.reset();
 

しかし、フォームを再度開いた後、入力の下に赤いエラーが表示されます。

私もこれを試した

     this.person.get('firstName').markAsUntouched();
   this.person.get('lastName').markAsUntouched();
     this.person.get('firstName').markAsPristine();
    this.person.get('lastName').markAsPristine();
 

しかし、これも機能しません。

どのようにそれを修正するための任意のアイデア?

  ベストアンサー

私はvalidatorsをリセットしたいときに以下を一度使用しました:

     this.person.get('firstName').clearValidators();
    this.person.get('firstName').updateValueAndValidity();
 

  同じタグがついた質問を見る

javascriptangulartypescriptangular-reactive-forms