FormContext
Defined in: core/types/form-context.ts:30
Единый контекст для работы с формой
Предоставляет:
form- типизированный Proxy-доступ к полям формыsetFieldValue- безопасная установка значения (emitEvent: false)
Type Parameters
TForm
TForm
Methods
getFieldByPath()
getFieldByPath(path):
| FormNode<FormValue>
| undefined;
Defined in: core/types/form-context.ts:108
Получить поле формы по строковому пути
Используется для динамического доступа к вложенным полям, особенно в модульных behavior схемах, применяемых через apply().
Parameters
path
string
Строковый путь к полю (например "address.city")
Returns
| FormNode<FormValue>
| undefined
FormNode или undefined если поле не найдено
Example
// В модульной behavior схеме, применяемой к вложенному полю:
// apply([path.registrationAddress, path.residenceAddress], addressBehavior)
watchField(path.region, (region, ctx) => {
// path.city.__path = "registrationAddress.city" или "residenceAddress.city"
const cityField = ctx.getFieldByPath(path.city.__path);
cityField?.updateComponentProps({ options: cities });
});
setFieldValue()
setFieldValue(path, value): void;
Defined in: core/types/form-context.ts:85
Безопасно установить значение поля по строковому пути или FieldPath
Автоматически использует emitEvent: false для предотвращения
бесконечных циклов в behavior схемах.
Parameters
path
Путь к полю (строка или FieldPath)
string | FieldPathNode<TForm, unknown, unknown>
value
unknown
Новое значение
Returns
void
Example
// Сброс города при смене страны (строковый путь)
watchField(path.country, (country, ctx) => {
ctx.setFieldValue('city', null);
});
// Использование FieldPath напрямую (более типобезопасно)
watchField(path.country, (country, ctx) => {
ctx.setFieldValue(path.city, null);
});
Properties
form
readonly form: any;
Defined in: core/types/form-context.ts:61
Форма с типизированным Proxy-доступом к полям
Позволяет обращаться к полям напрямую через точечную нотацию:
ctx.form.email→ FieldNodectx.form.address.city→ FieldNode (вложенный)ctx.form.items→ ArrayNode
Example
// Получить значение
ctx.form.email.value.value
// Установить значение (⚠️ может вызвать цикл в behavior!)
ctx.form.email.setValue('new@mail.com')
// Безопасно установить значение
ctx.form.email.setValue('new@mail.com', { emitEvent: false })
// Обновить пропсы компонента
ctx.form.city.updateComponentProps({ options: cities })
// Валидация поля
await ctx.form.email.validate()
// Работа с массивами
ctx.form.items.push({ title: 'New' })
ctx.form.items.clear()