Angular ReactiveForms-如何将验证器设置为整个FormGroup

问题描述 投票:0回答:2

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

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

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]); 

但是很遗憾,它不起作用。

angular typescript angular-reactive-forms
2个回答
0
投票

您可以:

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)
}

0
投票

FormGroup接受验证器作为第二个参数。您可以像这样传递一个同步验证器函数的数组:

尝试一下:

 this.form.group({
      lastName: ['', ],
      firstName: ['', ]
    },{
      validator: [Validators.required]
    });
© www.soinside.com 2019 - 2024. All rights reserved.