Угловой асинхронный валидатор - PullRequest
0 голосов
/ 16 марта 2019

Я хочу написать собственный асинхронный валидатор для моей группы угловых форм, который должен проверить, достижим ли URL.Но если я отклоняю значение, измененное из AbstractControl, элемент управления всегда будет как-то недействительным.Пока это мой код

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

Хорошо, проблема в том, что Observable застрял в состоянии ожидания. добавление .first() к наблюдаемой http сделало трюк

0 голосов
/ 16 марта 2019

Вам, вероятно, придется отказать за пределами валидатора.Validator будет вызываться непрерывно, если источник входного сигнала продолжает излучать, и установка debounce после того, как вызов http ничего не делает.

export class UrlValidator {
static controlValue=new Subject()
static createValidator(http: HttpClient) {
    UrlValiator.controlValue.next(control.value)
    return (control: AbstractControl) => {
        return controlValue.pipe(
            debounceTime(1500),
            switchMap(()=>http(url))
            catchError(err => {
                console.log('err', err);
                if (err.status && err.status === 200) return of(null);
                return of({ input: 'urlError' });
            })
        );
    };
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...