更新FormControl中的验证器

时间:2017-04-23 22:33:00

标签: angular angular2-forms

有没有办法在声明后更新控件,比如

this.input = new FormControl('', Validators.required)
this.form = this.formBuilder.group({
  input = this.input
})

this.input.update('', Validators.maxlength(20))

2 个答案:

答案 0 :(得分:3)

如果您想在以后设置新的验证器,可以使用setValidators,您可能还想更新值和有效性,可以使用updateValueAndValidity运行。这是一个简单的例子:

this.myForm.controls.input.setValidators([Validators.required, 
                                          Validators.minLength(4)]);

this.myForm.controls.input.updateValueAndValidity();

Demo

如果您想更新字段值,可以如上所述使用patchValue

答案 1 :(得分:0)

您可以使用setValue方法或patchValue方法更新FormControl或FormGroup。在您的情况下,最好使用setValue

patchValue的作用是,如果你想用一些对象更新你的表单,并且该对象包含比表单更多的属性(这意味着表单上不存在某些属性),使用patchValue它只会获得表单上存在的值,在这种情况下,如果使用setValue,则会出现错误。对于这样的更多问题,如果你使用文档(它的详细信息比我在这里解释的更详细),它总是最好的。

https://angular.io/docs/ts/latest/api/forms/index/FormControl-class.html