Skip to content

DynamicForm 动态表单

动态表单组件,用于快速构建基于配置的表单界面。

TIP

除了完整的动态表单组件,我们也提供了独立的 EzFormItem 组件,可以用于构建自定义表单布局。

基础用法

组件类型

表单校验

自定义插槽

属性

属性名说明类型是否必须默认值
model-value初始表单数据Record-
items表单配置项FormItemConfig[][]
cols栅格布局列数number1
gutter栅格间距number20
formPropsel-form 属性Partial-

FormItemConfig

属性名说明类型是否必须默认值
prop字段名string-
label标签string-
type组件类型FormItemType | string-
defaultValue默认值any-
rules验证规则FormItemRule-
required是否必填booleanfalse
requiredMessage必填提示信息string-
span占用栅格列数number-
hidden是否隐藏booleanfalse
disabled是否禁用booleanfalse
placeholder占位符string-
options选项配置FormItemOption[]-
attrs组件属性(透传给具体组件)Record-
component自定义组件Component-
itemAttrs额外的 el-form-item 属性Record-
show联动显示条件Function-
disabledWhen联动禁用条件Function-

数据初始化优先级

  • model-value:外部传入的初始数据,优先级最高
  • defaultValue:配置项的默认值,仅在 model-value 中不存在该字段时生效

数据流设计

本组件采用单向数据流 + 方法控制的设计:

  • model-value 仅用于初始化,不做双向绑定
  • 使用 getFormData() 按需获取表单数据(如提交时)
  • 使用 setFormData() 显式设置数据(会自动清除校验提示)
  • 这种设计确保了数据流清晰、性能最优,适合复杂表单场景

注意事项

自本版本起,组件已移除对 model-value 的自动监听与双向同步(不再自动 emit update:modelValue)。

  • 当需要从外部更新表单数据,请使用组件实例方法 setFormData(data, merge?: boolean)
  • 若需获取最新表单数据,请使用 getFormData()(例如在提交或父级需要读取时)。
  • 如果原来依赖 v-model 双向绑定的用法,请改为使用 ref 调用上述方法来同步数据。

此变更可避免高频双向同步带来的性能开销,推荐在复杂场景下使用方法控制数据流。

FormItemType

名称说明
INPUT输入框
TEXTAREA多行文本
NUMBER数字输入
PASSWORD密码输入
SELECT下拉选择(封装组件)
RADIO单选框(封装组件)
CHECKBOX多选框(封装组件)
DATE日期选择
DATETIME日期时间
DATERANGE日期范围
DATETIMERANGE日期时间范围
TIME时间选择
TIMERANGE时间范围
UPLOAD_IMAGES图片上传(封装组件)
SWITCH开关
TREE_SELECT树形选择
CASCADER级联选择
TREE树形控件
SLIDER滑块
RATE评分

方法

方法名说明类型
validate验证表单Function
validateField验证指定字段Function
clearValidate清空验证Function
resetFields重置表单(重置为初始数据)Function
getFormData获取表单数据(按需调用)Function
setFormData设置表单数据(会清除校验,支持合并或完全替换)Function

插槽

插槽名说明参数
[prop]自定义表单项内容{ item: FormItemConfig, value: any, formData: Record }
label-[prop]自定义表单项标签{ item: FormItemConfig }

基于 MIT 许可发布