Перейти к основному содержимому

Обзор валидации

ReFormer предоставляет декларативную валидацию со встроенными валидаторами и поддержкой кастомной валидации.

Базовое использование

Определите валидацию в validation:

import { GroupNode } from '@reformer/core';
import { required, email, minLength } from '@reformer/core/validators';

const form = new GroupNode({
form: {
name: { value: '' },
email: { value: '' },
},
validation: (path) => {
required(path.name);
minLength(path.name, 2);
required(path.email);
email(path.email);
},
});

Состояние валидации

// Проверка состояния валидации
form.valid; // true если все поля валидны
form.invalid; // true если есть невалидные поля

// Проверка конкретного поля
form.controls.name.valid;
form.controls.name.errors; // { required: true } или null

Сообщения об ошибках

Доступ к ошибкам отдельных полей:

const name = form.controls.name;

name.errors;
// null - когда валидно
// { required: true } - когда required не прошёл
// { minLength: { required: 2, actual: 1 } } - когда minLength не прошёл

Встроенные валидаторы

ВалидаторОписаниеКлюч ошибки
required(path.field)Поле должно иметь значениеrequired
email(path.field)Корректный формат emailemail
minLength(path.field, n)Минимальная длина строкиminLength
maxLength(path.field, n)Максимальная длина строкиmaxLength
min(path.field, n)Минимальное числовое значениеmin
max(path.field, n)Максимальное числовое значениеmax
pattern(path.field, regex)Соответствие регулярному выражениюpattern
url(path.field)Корректный формат URLurl
phone(path.field)Корректный формат телефонаphone
number(path.field)Должно быть числомnumber
date(path.field)Корректная датаdate

Условная валидация

Применять валидацию только при выполнении условия:

import { when } from '@reformer/core/validators';

validation: (path) => {
when(
() => form.controls.contactByPhone.value === true,
(path) => {
required(path.phone);
}
);
};

Время валидации

Валидация запускается автоматически когда:

  • Изменяется значение
  • Поле помечается как touched (для отображения)
// Ручная валидация
form.validate(); // Валидировать всю форму

Следующие шаги