Skip to main content

createFormFromModel()

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

Defined in: core/utils/create-form.ts:220

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

Значения принадлежат модели (источник истины), ноды формы держат UI/валидационное состояние и ссылаются на сигналы модели по идентичности (node.value === model.$.path). Обходит структуру модели, привязывает конфиг поля (component/componentProps/validators) из схемы, материализует top-level массивы как ModelArrayNode, заполняет реестр сигнал→нода (для enableWhen/ роутинга ошибок) и, при наличии, запускает декларативное поведение (cleanup живёт на форме).

Обычно вызывается неявно через createForm с аргументом { model, schema } — прямой вызов нужен редко (например, для построения формы элемента массива).

Type Parameters

T

T

Тип модели данных формы

Parameters

args

CreateFormFromModelArgs<T>

Модель, единая схема и (опционально) декларативное поведение CreateFormFromModelArgs

Returns

FormProxy<T>

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

Example

import { createModel, createFormFromModel } from '@reformer/core';

interface Form {
email: string;
profile: { name: string; age: number };
}

const model = createModel<Form>({ email: '', profile: { name: '', age: 0 } });
const schema = {
component: Section,
children: [
{ value: model.$.email, component: Input, validators: [required] },
{ value: model.$.profile.name, component: Input },
],
};

const form = createFormFromModel<Form>({ model, schema });

// Двусторонняя связь нода ↔ модель:
form.email.setValue('user@mail.com');
console.log(model.email); // 'user@mail.com'

See

createForm - основная фабрика (диспетчеризует сюда при аргументе { model, schema })