Задать вопрос
@Mariik

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

Привет.

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


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

Заранее спасибо.
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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)]);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы