我已经创建了这个验证功能:
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],
...
}
}
当我在这个字段中写任何字符时,我收到了这个错误:
错误:返回Promise或Observable的预期验证器。
有什么想法吗?
答案 0 :(得分:11)
“field”数组中的第三项是异步验证器(或它们的数组)。因此,要指定多个同步验证器,您需要:
将它们作为数组传递
this.fb.group({
'formControlName': [this.hero.name, [
Validators.required,
Validators.minLength(4)
]]
});
或使用
组合它们(如Jordi所写)Validators.compose(...)
FormBuilder API doc没有详细讨论参数,但由于它只是使用FormControl-s创建FormGroup的快捷方式,因此您可以查看FormControl构造函数: https://angular.io/docs/ts/latest/api/forms/index/FormControl-class.html
答案 1 :(得分:5)
我刚刚使用Validators.compose
:
this.form = this.fb.group({
field: ['', Validators.compose([Validators.required, this.validateCardNumber])],
...
}