ng2-formly 是 Angular 中的一个强大的动态表单库,允许您使用 JSON 格式定义表单结构和验证。本文将介绍如何使用 ng2-formly 创建动态表单,并提供相关示例代码。
安装
在使用 ng2-formly 之前,您需要安装它。可以使用以下命令安装:
--- ------- ------ ---------------- ---------------------
其中,@ngx-formly/core 是 ng2-formly 的核心库,@ngx-formly/bootstrap 则是一个基于 Bootstrap 样式的适配器库。
基础示例
下面是一个简单的示例,演示如何使用 ng2-formly 创建动态表单:
------ - --------- - ---- ---------------- ------ - --------- - ---- ----------------- ------ - ------------------ ----------------- - ---- ------------------- ------------ --------- ----------- --------- - ----- ------------------ ------------------------ ------------ ------------- ----------------- ---------------------------------- ------- ------------------------- ------- -- -- ------ ----- ------------ - ---- - --- -------------- -------- ----------------- - --- ------- ------------------- - - - ---- ------- ----- -------- ---------------- - ------ ----- ------------ -------- --------- ----- -- -- - ---- ------ ----- -------- ---------------- - ------ ----- ------------ -------- ----- --------- ---- -- ---- ---- --------- ----- -- -- - ---- --------- ----- -------- ---------------- - ------ ----- -------- - - ------ ---- ------ ------ -- - ------ ---- ------ -------- -- -- --------- ----- -- -- -- ---------- - -- ----------------- - --------------------------------------- - - -
在上面的示例中,我们创建了三个表单字段:名称、年龄和性别。使用 FormlyFieldConfig
定义每个字段的属性,并将它们添加到 fields
数组中。然后,在模板中使用 <formly-form>
组件渲染表单。
高级示例
ng2-formly 还支持更高级的功能,例如自定义类型、动态表单和异步验证等。下面是一个高级示例,演示如何使用 ng2-formly 创建一个动态表单并进行异步验证:
------ - --------- - ---- ---------------- ------ - --------- - ---- ----------------- ------ - ------------------ ----------------- - ---- ------------------- ------ - ----------- -- - ---- ------- ------ - ----- - ---- ----------------- ------------ --------- ----------- --------- - ----- ------------------ ------------------------ ------------ ------------- ----------------- ---------------------------------- ------- ------------------------- ------- -- -- ------ ----- ------------ - ---- - --- -------------- -------- ----------------- - --- ------- ------------------- - - - ---- ------- ----- -------- ---------------- - ------ ----- ------------ -------- --------- ----- -- -- - ---- -------- ----- -------- ---------------- - ------ ------- ------------ ---------- --------- ----- ----- -------- -- ----------- - ----------- ---------- -- ---------------- - ------------ - ----------- --------- -- - ------ ---------------- --- ----------------------------------- -- -------- --------------- ----------------------------------------------------------- ---------- ---------------------------------------------------------------------------------------