Я думал, что создание дебагованного валидатора в Angular тривиально, но это не так. Да, я знаю, что я могу создать пользовательский валидатор, но мне нужны стандартные валидаторы, но они были отклонены.
Что у меня есть
'username': new FormControl('', Validators.compose([Validators.required, Validators.minLength(3)]))
И что бы я хотел иметь
'username': new FormControl('', Validators.compose([ValidatorUtil.debounce(Validators.required), ValidatorUtil.debounce(Validators.minLength(3)])))
Так пытался это сделать, но у меня ничего не получилось: (
import {Validators} from "@angular/forms";
import {ValidatorFn} from "@angular/forms/src/directives/validators";
export class ValidatorUtil extends Validators {
static debounce(validator: (ValidatorFn | null | undefined)): ValidatorFn | null {
return Observable.timer(1000).switchMap(()=>{
return validator()
.mapTo(null)
.catch(err=>Observable.of({availability: true}));
});
}
}
Какие-нибудь советы?
Код адаптирован из
Как добавить время отката в асинхронный валидатор в angular 2?