He creado esta función de validación:
private customValidateField(c: FormControl): any { return c.value[0] === 'a' ? null : { notValid: true }; }Entonces, en mi forma reactiva:
constructor(private fb: FormBuilder) { this.form = this.fb.group({ field: ['', Validators.required, this.customValidateField], ... } }Cuando escribo cualquier carácter en este campo, aparece este error:
Error: se esperaba que el validador devolviera Promise u Observable.
¿Algunas ideas?
El tercer elemento en la matriz de "campo" es un validador asíncrono (o una matriz de ellos). Entonces, para especificar múltiples validadores síncronos, necesita:
Pasarlos como una matriz
this.fb.group({ 'formControlName': [this.hero.name, [ Validators.required, Validators.minLength(4) ]] });o combínalos (como escribió Jordi) usando
Validators.compose(...)El documento de la API de FormBuilder no analiza los parámetros en detalle, pero dado que es solo un atajo para crear FormGroup con FormControl-s, puede echar un vistazo al constructor de FormControl:https://angular.io/docs/ts/latest/ api/forms/index/FormControl-clase.html
Acabo de usar Validators.compose :
this.form = this.fb.group({ field: ['', Validators.compose([Validators.required, this.validateCardNumber])], ... }