У меня есть контроль формы типа date, который позволяет пользователю выбрать дату. Я хочу создать asyn c валидатор, который проверяет, существует ли уже представленная дата x раз в моей базе данных. Если это так, предоставьте ошибку в следующем виде:
order.get('DateOfDelivery').errors?.exists
Я создал эту функцию внутри своего компонента магазина классов (и он работает против моей базы данных. Он возвращает с соответствующим количеством заказов на запрос дата):
checkDeliveriesDate(event) {
console.log(event.target.value);
let date = { date: event.target.value };
this.SS.getOrdersPerDate(date).subscribe(
res => {
console.log(res);
/*
if (res.length>3){
formcontrol for e should turn invalid
}
else{
valid
}
*/
},
err => {
console.log(err);
}
)
}
вот форма управления. Я знаю, что asyn c валидатор должен быть третьим аргументом -
DateOfDelivery: new FormControl('', Validators.required),/*AsyncValidatorHere*/),
Вот это HTML -
<input type="date" class="form-control" formControlName="DateOfDelivery" (change)='checkDeliveriesDate($event)'>
Я ценю помощь. Заранее спасибо
Редактировать:
checkDeliveriesDateValidator(ctrl: AbstractControl) {
if (!ctrl || String(ctrl.value).length === 0) {
console.log("!c|| String (c.value).length ===0")
return null;
}
return (ctrl && ctrl.value) ? this.SS.getOrdersPerDate({ date: ctrl.value }).pipe(
map(res => {
let deliveriesDate:any=res;
console.log(deliveriesDate);
if (deliveriesDate.length>3){
return {exists: true};
}
else{
return null;
}
})
) : null;
}
Валидатор asyn c выдает эту ошибку-
ОШИБКА TypeError: Невозможно прочитать свойство 'SS' из неопределенного