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

createForm()

Реализация фабричной функции

Call Signature

function createForm<T>(args): FormProxy<T>;

Defined in: form/create-form.ts:328

Создать форму из FormModel + единой схемы (архитектура M1, рекомендуемый путь).

Type Parameters

T

T

Parameters

args

CreateFormFromModelArgs<T>

Модель данных, layout-схема (component/componentProps) и (опционально) поведение

Returns

FormProxy<T>

Типизированная форма с Proxy-доступом к полям

Example

import { createModel, createForm } from '@reformer/core';
import { defineValidationSchema, validate, validateModel } from '@reformer/core/validation';
import { required, email, minLength } from '@reformer/core/validators';

interface UserForm {
email: string;
password: string;
}

const model = createModel<UserForm>({ email: '', password: '' });

// Layout-схема НЕ несёт validators — только component/componentProps.
const schema = {
children: [
{ value: model.$.email, component: Input },
{ value: model.$.password, component: Input },
],
};

const form = createForm<UserForm>({ model, schema });
form.email.setValue('test@mail.com');

// Валидация — ОТДЕЛЬНАЯ схема, прогон внешним раннером (ошибки сами доезжают до нод):
const validation = defineValidationSchema<UserForm>(({ model }) => {
validate(model.$.email, [required(), email()]);
validate(model.$.password, [required(), minLength(8)]);
});
const ok = await validateModel(model, validation);

Call Signature

function createForm<T>(config): FormProxy<T>;

Defined in: form/create-form.ts:330

Создать форму из FormModel + единой схемы (архитектура M1, рекомендуемый путь).

Type Parameters

T

T

Parameters

config

GroupNodeConfig<T>

Returns

FormProxy<T>

Типизированная форма с Proxy-доступом к полям

Example

import { createModel, createForm } from '@reformer/core';
import { defineValidationSchema, validate, validateModel } from '@reformer/core/validation';
import { required, email, minLength } from '@reformer/core/validators';

interface UserForm {
email: string;
password: string;
}

const model = createModel<UserForm>({ email: '', password: '' });

// Layout-схема НЕ несёт validators — только component/componentProps.
const schema = {
children: [
{ value: model.$.email, component: Input },
{ value: model.$.password, component: Input },
],
};

const form = createForm<UserForm>({ model, schema });
form.email.setValue('test@mail.com');

// Валидация — ОТДЕЛЬНАЯ схема, прогон внешним раннером (ошибки сами доезжают до нод):
const validation = defineValidationSchema<UserForm>(({ model }) => {
validate(model.$.email, [required(), email()]);
validate(model.$.password, [required(), minLength(8)]);
});
const ok = await validateModel(model, validation);

Call Signature

function createForm<T>(schema): FormProxy<T>;

Defined in: form/create-form.ts:350

Создать форму только со схемой полей.

Type Parameters

T

T

Parameters

schema

FormSchema<T>

Схема полей формы

Returns

FormProxy<T>

Типизированная форма с Proxy-доступом к полям

Deprecated

Legacy / back-compat: плоская FormSchema с инлайн-значениями (value: '') — путь ДО архитектуры M1. Для нового кода используйте перегрузку createForm({ model, schema }) (значения принадлежат FormModel, валидаторы — фабрики в validators: [...]).

Example

const form = createForm<UserForm>({
email: { value: '', component: Input },
password: { value: '', component: Input },
});