У меня есть FormArray в FormGroup, и каждый из FormArray имеет несколько FormGroup и может добавлять их динамически.
У меня есть Async Validator, где ему нужны все данные в FormGroup для проверки минимального payRate,в настоящее время есть фиктивный Async Validator, который не использует все значения FormGroup, но будет нуждаться в них для вызова API.
Проблема возникает потому, что если мне нужны все данные FormGroup, мне нужно добавитьAsync Validator для FormGroup, а не для отдельного FormControl, к которому мне нужно получить ng-invalid , чтобы иметь цвет границы: красный.
Ссылка StqackBlitz: https://stackblitz.com/edit/angular-vr4cya-b3r3od
addPay.push(
new FormGroup({
"payRate": new FormControl(assign.jobRate, Validators.required),
"position": new FormControl(assign.position, Validators.required),
"location": new FormControl(assign.location, Validators.required),
"department": new FormControl(assign.department, Validators.required)
},null,this.payRateValidator.bind(this))
);
payRateValidator:
payRateValidator(control: AbstractControl): {[key: string]: any} {
const payRate = control.get('payRate').value;
const location = control.get('location').value;
const department = control.get('department').value;
const promise = new Promise<any>((resolve, reject) => {
setTimeout(() => {
if (payRate <= 13) {
resolve({'payRateisLess': true});
} else {
resolve(null);
}
}, 1500);
});
return promise;
}
Невозможно использовать асинхронный валидатор для PayRate FormControl, поскольку функция асинхронного валидатора не может получить доступ к значениям другихFormControl в FormGroup.
addPay.push(
new FormGroup({
"payRate": new FormControl(assign.jobRate, Validators.required, this.payRateValidator.bind(this)),
"position": new FormControl(assign.position, Validators.required),
"location": new FormControl(assign.location, Validators.required),
"department": new FormControl(assign.department, Validators.required)
})
);
В настоящее время, когда я нажимаю кнопку + Дополнительное назначение, по умолчанию я получаю текст ошибки, "Pарендная плата введите Pay Rate> 13 ", но это не скрывается, когда я набираю значение больше 13, потому что Мне нужно ввести все входные данные в FormGroup , так как у меня есть другие валидаторы для этогоОбязательно.
После ввода всех входов в текущую FormGroup сообщение об ошибке исчезает.
Есть ли какой-либо способ показать только сообщение об ошибке, только для тега ввода ставки оплаты при наличии асинхронного валидатора для всей FormGroup ???.