2016-05-13 259 views
1

我有部分模型驅動部分模板驅動窗體,我想驗證其中一個使用自定義邏輯的輸入。問題是,即使驗證返回有效,控制處於無效狀態。我究竟做錯了什麼?使用驗證服務進行驗證

<span *ngIf="identityNumber.touched && !identityNumber.valid">invalid</span> 

..

this.form = this.formBuilder.group({ 
    identityNumber: ['', Validators.required, 
     ValidationService.validateIdentityNumber] 
}); 

..

public static validateIdentityNumber(control: Control) { 
    let val: string = <string>control.value; 
    if (val && val.length == 11) { 
    return null; 
    } else { 
    return { "invalidIdentityNumber": true }; 
    } 
} 

http://plnkr.co/edit/1IY4iXEeQDXUanCOSCKX?p=preview

它顯示爲 「無效」,甚至當你鍵入11個字符。

(我知道有一個長的驗證,這是樣品的緣故)

回答

0

如果您想通過多個驗證使用Validators.compose

identityNumber: ['', 
    Validators.compose([ 
     Validators.required, 
     ValidationService.validateIdentityNumber 
    ]) 
] 

(第三個參數是異步驗證)