如何在角度2的场上进行多次验证?

时间:2017-04-03 07:08:43

标签: javascript angular

我正在以角度2构建模型驱动形式,我希望特定字段的范围验证在1-1000之间,并且还可以具有2000和2001的值,

我试着把它写成:

this.configForm.controls["field"].setValidators(Validators.compose([Validators.required,CustomValidators.equal(2000),CustomValidators.equal(2001), CustomValidators.range([1,1000])]));

但它不起作用..

怎么做?

感谢。

2 个答案:

答案 0 :(得分:1)

如果您使用的是FormBuilder,请考虑实施一个验证一组控件而不是单个控件的组验证器:

How to do simple cross field validation in Angular 2 form to pass validation if one of the control in group has value?

FormBuilder的group方法的第二个参数允许您指定组验证器:

 this.fb.group({
     field1: [''],
     field2: [''],
     }, 
     {
         validator: (c:FormGroup) => {
              return {'whateveryouwant': true};
         }
     }
 );

如果您需要清除字段验证标志:

let field1 = c.get('field1');
field1.setErrors(null);

答案 1 :(得分:0)

根据FormControl API, 没有setValidators()功能。

您可能需要添加新控件:

this.configForm.controls["field"] = new FormControl('',Validators.compose([
      Validators.required,CustomValidators.equal(2000),
      CustomValidators.equal(2001), 
      CustomValidators.range([1,1000])]
      ));