Вы можете реализовать так, как я использовал в своем проекте.
import { FormControl } from '@angular/forms';
export function appCarrierFormValidation(control: FormControl) {
// change your logic to validate carrier
let pattern = /[*\\/|":?><]/gi;
//if validation fails, return error name & value of true
if (pattern.test(control.value)) {
return { validString: true };
}
//otherwise, if the validation passes, we simply return null
return null;
}
И использовать
name: ['', [Validators.required, appCarrierFormValidation]],
Если вы хотите использовать formGroup
public appCarrierFormValidation() : ValidatorFn{
return (group: FormGroup): ValidationErrors => {
const name= group.controls['name'];
const email= group.controls['email'];
// add your logic here
if (name.value.length < 6 && email.value.indexOf('@') < 0) {
email.setErrors({invalid: true});
} else {
email.setErrors(null);
}
return;
};
}
Обновите ваш код
createForm() {
this.addCarrierForm = this.fb.group({
name: ['', Validators.required],
email: ['', [Validators.required, Validators.email]]
})
this.addCarrierForm .setValidators(this.appCarrierFormValidation())
}