createFormFromModel()
function createFormFromModel<T>(args): FormGroup<T>;
Defined in: form/create-form.ts:193
Собрать форму из FormModel и единой схемы (низкоуровневая фабрика).
Значения принадлежат модели (источник истины), ноды формы держат UI/валидационное состояние и
ссылаются на сигналы модели по идентичности. Обходит структуру модели и строит ноды по виду её
узлов, привязывает конфиг поля (component/componentProps) из схемы, материализует массивы
под-форм (FormArray, на любой глубине), заполняет реестр ручка→нода (для
enableWhen, apply/applyEach и роутинга ошибок) и, при наличии, запускает декларативное
поведение (cleanup живёт на форме).
Обычно вызывается сборкой одним вызовом (createForm): она строит дерево схемы, зовёт эту
фабрику и собирает валидацию. Прямой вызов нужен там, где бандл не нужен, — форма элемента
массива, тесты, свой слой сборки.
Type Parameters
T
T
Тип модели данных формы
Parameters
args
Модель, единая схема и (опционально) декларативное поведение CreateFormFromModelArgs
Returns
FormGroup<T>
Группа формы FormGroup с нодами полей по именам
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: [
// Layout несёт только component/componentProps; правила — в отдельной ValidationDefinition.
{ model: model.$.email, component: Input },
// вложенная группа: `model.$.profile.name` (≡ под-модель `model.profile.$.name` — тот же сигнал)
{ model: 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 — сборка одним вызовом: модель, форма, валидация и дерево для рендера