compileSchema()
function compileSchema(
tree,
model?,
options?): CompiledSchema;
Defined in: form/schema/compile.ts:512
Скомпилировать дерево схемы: вид каждого узла, нормализованные привязки, идентификаторы и индексы области.
Повтор selector в одной области — исключение с путями обоих узлов. Неизвестный ключ узла и
нераспознанная привязка — предупреждения в dev; такой узел становится контейнером. Вторая
привязка той же ручки — тоже предупреждение: нода формы у ручки одна.
Parameters
tree
Корень авторского дерева (FormSchemaNode).
model?
object
Модель области (корень сборки, под-модель строки либо группы): пути вложенных
областей считаются от неё; без неё — абсолютные пути ручек (#/phones.1.address).
options?
Returns
CompiledSchema области.
Throws
Error при повторе selector в области, при селекторе, совпавшем с позиционным путём
узла (#/1), и при зацикленном дереве (в том числе через подформу).
Example
const model = createModel({ email: '', phones: [{ number: '' }] });
const compiled = compileSchema(
{
children: [
{ selector: 'email', model: model.$.email, component: Input },
{ model: model.$.phones, item: (row) => ({ model: row.$.number, component: Input }) },
],
},
model
);
compiled.nodes.get('email' as SchemaNodeId)?.kind; // 'field'
compiled.fields.get(model.$.email)?.component; // Input
compiled.arrays.get(model.$.phones)?.row(model.phones.at(0)!).scope; // '#/phones[0]'