使原始的角形控件变脏

时间:2017-06-12 21:27:16

标签: javascript angular typescript angular-reactive-forms

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>

如果pristine / dirty应该只指定人工交互并且不能以编程方式进行更改,那么这里有什么解决方案?

1 个答案:

答案 0 :(得分:20)

formControl的每个实例都有markAsDirty()markAsPristine()方法,因此,您应该可以运行

this.form.controls.foo.markAsPristine()

或更好,使用反应形式API:

this.form.get('foo').markAsPristine()

甚至

this.form.markAsPristine()

使用markAsDirty()方法

也可以这样做