useFormDialog 表单对话框
在 useDialog 之上注入 ElFormBuilder:内容区默认渲染构建器,底部「提交」先执行 el-form validate(),再可选 submitHandler,最后 resolve 并携带当前 model 的 JSON 快照;「取消」触发 cancelHandler 后以 cancel 原因 reject。
与 useDialog 相同,须在应用根布局挂载 portal-vue 目标(文档站已在布局中放置 <portal-target name="ell-dialog" multiple />)。
基础用法
参数
useFormDialog(options, keepInstance?, targetName?)
| 参数 | 说明 | 默认 |
|---|---|---|
options | 见 UseFormDialogOptions | — |
keepInstance | 是否保留 ElDialog 实例(同 useDialog) | false |
targetName | portal 目标名 | 'ell-dialog' |
返回值
在 useDialog 的 dialogUid、各 *PortalName、openDialog 等基础上扩展:
| 属性 | 说明 |
|---|---|
formUid | 内部为 ElFormBuilder 生成的 uid |
open / openFormDialog | 打开表单弹窗,入参 EllFormDialogOpenArgs? |
close | 手动 resolve;不传参时 data.model 为当前快照 |
dismiss | reject({ reason: 'cancel' }) |
类型说明
主包导出:
ts
import type {
EllFormDialogFormConfig,
EllFormDialogOpenArgs,
EllFormDialogPayload,
UseFormDialogOptions,
} from 'element-plus-lab'EllFormDialogPayload:model(响应式)、formRef(el-form实例,打开初期可能为undefined)。UseFormDialogOptions:除formConfig外,可选title/width/dialogConfig/submitText/cancelText/actions,以及renderHeader/render/renderFooter/beforeClose(语义同useDialog)。
详见 packages/components/form-dialog/src/types.ts。

jenemy