首页 > 解决方案 > Angular ReactiveForms - 如何将验证器设置为整个 FormGroup

问题描述

我目前有一个非常大的表格。

我对每个字段都有以下验证器,例如:

this.surname = new FormControl('', [
      Validators.pattern(/^([a-zA-Z0-9]+[_.\- /\\]{0,1})*([a-zA-Z0-9]+)$/i),
      Validators.minLength(3),
      Validators.maxLength(30),
      Validators.required
    ]);

每个字段都一样。是否可以不重复代码并为每个人应用相同的规则?我刚试过:

formGroupName.setValidators([Validators.required]); 

但不幸的是它不起作用。

标签: angulartypescriptangular-reactive-forms

解决方案


你可以:

1.-使用辅助变量

const validators=[
      Validators.pattern(/^([a-zA-Z0-9]+[_.\- /\\]{0,1})*([a-zA-Z0-9]+)$/i),
      Validators.minLength(3),
      Validators.maxLength(30),
      Validators.required
    ]
this.surname = new FormControl('',validators)

2.-使用 setValidator 迭代控件

Object.keys(this.form).forEach(key=>{
     this.form.get(key).setValidators(Validators.required)
}

推荐阅读