2016-05-13 213 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 
    ]) 
] 

(第三个参数是异步验证)