@Mariik

Как имзенить порядок валидации в Angular5?

Привет.

Для примера: есть реактивная форма, в которой поле ввода имэйла, на которое повесили несколько валидаторов. Примерно так:
Email: new FormControl('', [Validators.required, Validators.email])


Проблема в том, что при пустом поле отрабатывают оба валидатор сразу и показывают свои сообщения об ошибке. А мне нужен такой флоу:
1. Отрабатывает валидатор required
2. Если required отработал, то только тогда уже отрабатывает валидатор email

Заранее спасибо.
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dmitrygavrish
Можно написать свою функцию-валидатор, например так:
function validateInSequence(
    ...validators: ( (formControl: FormControl) => any )[]
): (formControl: FormControl) => any {
    return function (formControl: FormControl): any {
        for (let i = 0; i < validators.length; i++) {
            const validationResult = validators[i](formControl);

            if (validationResult !== null) {
                return validationResult;
            }
        }

        return null;
    };
}

И использовать ее таким образом:
new FormControl('', [validateInSequence(Validators.required, Validators.email)]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы