Javascript 任何简单的方法都可以将一个验证规则应用于所有字段,方法为6
假设一个数据模型包含20个不同名称的字符串字段(“名称”、“地址”、“公司”等),作为20个输入字段映射到角度前端。现在,如果任何字段包含特殊字符,要求验证阻止用户提交表单的每个字段Javascript 任何简单的方法都可以将一个验证规则应用于所有字段,方法为6,javascript,angular,angular6,angular-validation,Javascript,Angular,Angular6,Angular Validation,假设一个数据模型包含20个不同名称的字符串字段(“名称”、“地址”、“公司”等),作为20个输入字段映射到角度前端。现在,如果任何字段包含特殊字符,要求验证阻止用户提交表单的每个字段 我可以计算出正则表达式模式,但只是想知道有什么简单的方法可以对所有字段执行一个验证器 有一个简单的解决方案,例如只使用一个异步验证器 例如,您可以对所有字段进行分组,只要子表单中的一个字段发生更改,我们就应该对这些字段进行验证 然后对它们应用验证程序 示例: this.mySubForm = this.fb.gro
我可以计算出正则表达式模式,但只是想知道有什么简单的方法可以对所有字段执行一个验证器 有一个简单的解决方案,例如只使用一个异步验证器 例如,您可以对所有字段进行分组,只要子表单中的一个字段发生更改,我们就应该对这些字段进行验证 然后对它们应用验证程序 示例:
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
作为子表单,如果你愿意,甚至可以避免使用子表单。我想学习新东西;比如说,如果表单中有100多个字段,你不认为在if子句中放入100多个字段会变得太长吗?还有像Add和Edit这样的多个组件呢?你可以动态生成属性并将它们绑定到动态创建的表单。