我目前有一个非常大的表格。
例如,我对每个字段都有以下验证器:
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]);
但是很遗憾,它不起作用。
您可以:
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)
}
FormGroup接受验证器作为第二个参数。您可以像这样传递一个同步验证器函数的数组:
尝试一下:
this.form.group({
lastName: ['', ],
firstName: ['', ]
},{
validator: [Validators.required]
});