web-dev-qa-db-ja.com

元の状態にするAngularフォームコントロールをダーティにする

Angular 4にリアクティブフォームがあり、ある時点でプログラムによって設定されるコントロールがあります。

this.form = formBuilder.group({
  foo: ''
});
...
this.form.controls.foo.setValue('foo');

原始的/汚い状態を制御するにはどうすればよいですか?現在、私はformfooの両方の初期状態を使用しています。

<form [formGroup]="form">
  <input [formControl]="form.controls.foo">
</form>

<p *ngIf="form.controls.foo.pristine">
  {{ form.controls.foo.errors | json }}
</p>

<button [disabled]="form.pristine">Submit</button>

手付かず/汚れが人間の相互作用のみを指定することになっていて、プログラムで変更できない場合、ここでどの解決策が望ましいでしょうか?

8
Estus Flask

formControlの各インスタンスにはmarkAsDirty()およびmarkAsPristine()メソッドがあるため、実行できるはずです。

_this.form.controls.foo.markAsPristine()
_

または、リアクティブフォームAPIを使用:

_this.form.get('foo').markAsPristine()
_

あるいは

_this.form.markAsPristine()
_

markAsDirty()メソッドでも同じことができます

26
Andriy