16

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>

如果原始/脏应该只指定人类交互并且不能以编程方式进行更改,那么这里更可取的解决方案是什么?

4

1 回答 1

41

formControlhasmarkAsDirty()和方法的每个实例markAsPristine()(从 AbstractControl 继承),因此,您应该能够运行

this.form.controls.foo.markAsPristine()

或者更好,使用响应式表单 API:

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

甚至

this.form.markAsPristine()

markAsDirty()方法也可以这样做

于 2017-06-12T21:46:46.353 回答