通过Angular 6将一种验证规则应用于所有字段的任何简单方法

时间:2018-11-12 02:34:59

标签: javascript angular angular6 angular-validation

考虑一个数据模型包含20个具有不同名称(“ name”,“ address”,“ company” .. etc等)的字符串字段,它们作为20个输入字段映射到Angular前端。现在,要求要求验证每个阻止用户提交表单的字段,如果任何字段包含特殊字符。

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

1 个答案:

答案 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用于子表单,或者根据需要甚至避免使用子表单。