В Angular есть два типа форм:
— Шаблонные формы
— Реактивные формы

Если вы новичок в формах, разберитесь с этим здесь. В этом сообщении блога мы узнаем, как создавать собственные валидаторы для Angular Reactive Forms.

Итак, для начала я предполагаю, что вы уже создали проект, используя ng new. Теперь предположим, что мы создали реактивную форму с помощью FormGroup.

Прикрепим его к шаблону компонента с помощью привязки свойств следующим образом.

Это отобразит реактивную форму, подобную этой.

До сих пор мы не использовали проверку в наших элементах управления формой. Angular предоставляет нам множество валидаторов, таких как maxlength, required и т. д. Чтобы их использовать, не забудьте импортировать валидаторы в класс компонента.

iимпортировать { FormGroup, FormControl, Validators } из ‘@angular/forms’;

Предположим, мы используем валидацию по электронной почте и паролю, вот как это делается.

Внутри app.component.html

Это отображает:

Теперь, когда мы применили проверку к электронной почте и паролю, для класса мы хотим создать проверку для диапазона, чтобы класс был только от 1 до 12. В этом случае нам придется написать собственный валидатор, поскольку Angular не обеспечивает проверку диапазона.

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

function classValidator(control: AbstractControl): {[key: string]: boolean} | null {
вернуть null;
}

Здесь мы создали собственный валидатор с именем classValidator, где пользователь сможет ввести класс, только если он находится в заданном диапазоне. В случае сбоя проверки он вернет объект, содержащий пару ключ-значение.

В классе компонента
class: new FormControl(null, [classValidator])

В шаблоне это выглядит так:

Это отобразит:

Вот как пользовательские валидаторы помогают нам проверять наши элементы управления формой.