考虑一个数据模型包含20个具有不同名称(“ name”,“ address”,“ company” .. etc等)的字符串字段,它们作为20个输入字段映射到Angular前端。现在,要求要求验证每个阻止用户提交表单的字段,如果任何字段包含特殊字符。
我可以算出正则表达式模式,但只是想知道对所有字段执行一个验证器的任何简单方法。
答案 0 :(得分:1)
有一个简单的解决方案,例如仅使用一个异步验证器。
例如,您可以将子字段中的一个字段更改时我们应该验证的所有字段分组 然后对它们应用验证器。
示例:
this.mySubForm = this.fb.group({
field1: ['', [Validators.required]],
field2: ['', [Validators.required]],
...
field20: ['', [Validators.required]]
}, this.validatorAllFields.bind(this)
});
并以此方式定义异步验证器:
validatorAllFields(control: FormGroup): any {
if (control) {
if(control.value.field1 don't contain special char … &&
control.value.field2 don't contain special char … &&
…
control.value.field20 don't contain special char &&)
//validation is ok in this case
return null;
else
//validation fails here...
return {'formInvalid': 'true'}
} else {
return null;
}
}
您可以执行此操作而无需任何其他程序包,它将起作用。 只需实现以下功能:每个控件都没有任何特殊的字符,例如,它应该是相同的功能。
您可以将formGroupName
用于子表单,或者根据需要甚至避免使用子表单。