2017-04-04 35 views
4

我創建這個驗證功能:直白的自定義驗證

private customValidateField(c: FormControl): any { 
    return c.value[0] === 'a' ? null : { notValid: true }; 
} 

所以,我的反應形式:

constructor(private fb: FormBuilder) 
{ 
    this.form = this.fb.group({ 
    field: ['', Validators.required, this.customValidateField], 
    ... 
    } 
} 

當我在寫任何字符到這個領域,我得到這個錯誤:

Error: Expected validator to return Promise or Observable.

任何想法?

回答

4

我剛使用Validators.compose

this.form = this.fb.group({ 
    field: ['', Validators.compose([Validators.required, this.validateCardNumber])], 
    ... 
} 
11

「田」陣列中的第三項是一個異步驗證器(或它們的陣列)。因此,要指定多個同步驗證,您需要:

使用

Validators.compose(...) 

FormBuilder API文檔不討論將它們作爲一個數組

this.fb.group({ 
    'formControlName': [this.hero.name, [ 
     Validators.required, 
     Validators.minLength(4) 
    ]] 
}); 

或將它們組合(如爾迪寫道)詳細參數,但由於它只是FormControl-S創建FormGroup的快捷方式,因此您可以查看FormControl構造函數: https://angular.io/docs/ts/latest/api/forms/index/FormControl-class.html