2017-04-03 22 views
0

我建立一個模型驅動的形式,角度2,我想一個特定領域有1-1000的範圍內驗證和也能有2000年和2001年的數值,如何在角度2中進行多場驗證?

我試圖把它撰寫:

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

但它沒有工作..

怎麼辦呢?

謝謝。

+0

這是一個_reactive form_? –

+0

是的的確是 – Gold100

回答

0

根據FormControl API, 沒有setValidators()函數。

您可能需要添加新的控制:

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

嗨,仍然沒有工作,只有當我刪除2等於範圍生效,我猜這不是一個OR連接,謝謝 – Gold100

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);