Skip to main content

Validator()

type Validator<TForm, TField> = (value, scope, root) => ValidationError | null;

Defined in: core/types/validation-schema.ts:56

Чистый синхронный валидатор поля.

Сигнатура зеркалит то, что реально вызывает движок M1 (validateModel/validateFormModel/validateModelSync): validator(value, scope, root).

  • value — значение поля (TField);
  • scope — ближайшая scope-модель (под-модель элемента массива или корень). Из TForm/TField её тип не выводится, поэтому unknown — потребитель сужает сам (для типизированного scope используйте ModelValidator<TField, TScope, TForm>);
  • root — корневая модель формы FormModel<TForm> (реактивный value-proxy: root.field читает значение). Возвращает ValidationError либо null. Не знает про реестр валидации.

Совместим с полем validators узла схемы (см. SchemaValidator) — там же лежат ModelValidator и ValidatorFn. Встроенные фабрики (required()/email()/…) возвращают (value) => … и дополнительные аргументы игнорируют.

Type Parameters

TForm

TForm

TField

TField

Parameters

value

TField

scope

unknown

root

FormModel<TForm>

Returns

ValidationError | null

Example

const isAdult: Validator<MyForm, number> = (value, _scope, root) => {
if (value < 18) return { code: 'tooYoung', message: '18+' };
// root — FormModel<MyForm>: root.someOtherField читается как значение
return null;
};

// Фабрики и кастомные валидаторы кладутся в `validators: [...]` поля:
const schema = {
children: [
{ value: model.$.age, component: Input, validators: [required(), isAdult] },
],
};