Я искал много учебных пособий, чтобы можно было реализовать асинхронные валидаторы для реактивной формы в угловых, но я всегда получаю ошибку.
Что мне нужно сделать, это проверить, что значение, записанное в поле, существует в массиве объектов, хранящихся в службе.
Проблема в том, что валидатор работает нормально, когда я выполняюсравнение с фиксированным значением, но когда я пытаюсь использовать сервис, он говорит, что сервис не определен.
Код для формы:
ngOnInit() {
this.FormNuevaConf =this.fb.group({
'codigo': [null,null],
'valor': [null,null,this.valorUnicoValidator]
})}
Код для валидатора:
valorUnicoValidator (control: AbstractControl, service:UnidadesService): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {
return of(service.subscribe(control) === control.value).pipe(
map(result => result ? { invalid: true } : null)
);}
subscribe(control)
- это функция в службе, которая возвращает значение, если в массиве объектов, возвращенных из запроса db, найдено control.value
.
Я не нашел четкого объяснения того, как создать асинхронный валидатор, если у вас есть такой, который вы можете мне порекомендовать, я буду благодарен.