ngx-formly — библиотека для создания и управления динамическими формами в фреймворке Angular, реализующая декларативный подход к описанию полей формы. Она предоставляет абстракцию поверх стандартных форм Angular, позволяя определять структуру, валидацию и поведение полей через конфигурационные объекты вместо ручного написания шаблонного кода для каждого поля. Благодаря этому разработка сложных и изменяемых интерфейсов ввода данных становится более модульной и повторно используемой.
Проект ориентирован на интеграцию с реактивными формами Angular и поддерживает расширение за счёт пользовательских типов полей, валидаторов и обёрток. В типичном сценарии конфигурация формы описывается массивом полей, где каждое поле содержит ключ, тип, параметры отображения и правила валидации; затем библиотека генерирует необходимые контролы и шаблоны. Исторические детали происхождения проекта и точные даты релизов не указаны здесь; при отсутствии однозначных источников это описание фокусируется на функциональности и типичных возможностях, наблюдаемых в общедоступных описаниях.
- Декларативная конфигурация: форма описывается объектами конфигурации, которые определяют поля, их типы, метаданные и связи.
- Совместимость с Angular Reactive Forms: генерация FormControl, FormGroup и FormArray с полной поддержкой реактивной валидации.
- Расширяемость типов полей: возможность добавления пользовательских компонентов ввода и повторного использования их как типов в конфигурации.
- Управление валидацией: декларативные валидаторы и асинхронные проверки, отображение сообщений об ошибках через обёртки и шаблоны.
- Условная логика и видимость: поддержка зависимостей полей, условного рендера и динамического изменения параметров в зависимости от значений других полей.
- Международализация и локализация: интеграция с механизмами локализации для подписей, подсказок и сообщений об ошибках (через настройки приложения).
- Темизация и обёртки: возможность оформления полей с помощью обёрток и повторно используемых шаблонов, упрощающая единообразный дизайн форм.
- Управление данными: синхронизация начальных значений, сбора данных и преобразования значений при отправке или сохранении.
- Инструменты для сложных структур: поддержка вложенных групп, массивов полей и повторяющихся наборов ввода.
- Сообщество и интеграция: наличие расширений и примеров интеграции с UI-библиотеками и сторонними компонентами через адаптеры типов.