Javascript 任何简单的方法都可以将一个验证规则应用于所有字段,方法为6

Javascript 任何简单的方法都可以将一个验证规则应用于所有字段,方法为6,javascript,angular,angular6,angular-validation,Javascript,Angular,Angular6,Angular Validation,假设一个数据模型包含20个不同名称的字符串字段(“名称”、“地址”、“公司”等),作为20个输入字段映射到角度前端。现在,如果任何字段包含特殊字符,要求验证阻止用户提交表单的每个字段 我可以计算出正则表达式模式,但只是想知道有什么简单的方法可以对所有字段执行一个验证器 有一个简单的解决方案,例如只使用一个异步验证器 例如,您可以对所有字段进行分组,只要子表单中的一个字段发生更改,我们就应该对这些字段进行验证 然后对它们应用验证程序 示例: this.mySubForm = this.fb.gro

假设一个数据模型包含20个不同名称的字符串字段(“名称”、“地址”、“公司”等),作为20个输入字段映射到角度前端。现在,如果任何字段包含特殊字符,要求验证阻止用户提交表单的每个字段


我可以计算出正则表达式模式,但只是想知道有什么简单的方法可以对所有字段执行一个验证器

有一个简单的解决方案,例如只使用一个异步验证器

例如,您可以对所有字段进行分组,只要子表单中的一个字段发生更改,我们就应该对这些字段进行验证 然后对它们应用验证程序

示例:

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这样的多个组件呢?你可以动态生成属性并将它们绑定到动态创建的表单。