Angular 4中有一个反应形式,某些控制应该在某个时刻以编程方式设置。
this.form = formBuilder.group({
foo: ''
});
...
this.form.controls.foo.setValue('foo');
如何控制原始/脏状态?目前我正在使用form
和foo
原始状态,例如:
<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应该只指定人工交互并且不能以编程方式进行更改,那么这里有什么解决方案?
答案 0 :(得分:20)
formControl
的每个实例都有markAsDirty()
和markAsPristine()
方法,因此,您应该可以运行
this.form.controls.foo.markAsPristine()
或更好,使用反应形式API:
this.form.get('foo').markAsPristine()
甚至
this.form.markAsPristine()
使用markAsDirty()
方法