ctx.form
当前区块内的 Ant Design Form 实例,用于读写表单字段、触发校验与提交。等价于 ctx.blockModel?.form,在表单区块(Form、EditForm、子表单等)下可直接使用。
适用场景
注意:
ctx.form仅在表单区块(Form、EditForm、子表单等)相关的 RunJS 上下文中可用;非表单场景(如 JSBlock 独立区块、表格区块)可能不存在,使用前建议做空值判断:ctx.form?.getFieldsValue()。
类型定义
FormInstance 为 Ant Design Form 的实例类型,常用方法如下。
常用方法
读取表单值
写入表单值
校验与提交
重置
与相关 context 的关系
ctx.getValue / ctx.setValue
在当前 JS 字段内,优先用 getValue/setValue 读写本字段;需要访问其他字段时使用 ctx.form。
ctx.blockModel
ctx.getVar('ctx.formValues')
表单值需通过 await ctx.getVar('ctx.formValues') 获取,不直接暴露为 ctx.formValues。在表单上下文中,优先用 ctx.form.getFieldsValue() 实时读取最新值。
注意事项
getFieldsValue()默认只返回已渲染字段;未渲染字段(如折叠区、条件显隐)需传true:getFieldsValue(true)。- 子表格等嵌套字段的路径为数组,如
['orders', 0, 'amount'];可用ctx.namePath获取当前字段路径,用于构造同行其他列的路径。 validateFields()会抛出错误对象,包含errorFields等信息;提交前校验失败时可用ctx.exit()终止后续步骤。- 在事件流、联动规则等异步场景中,
ctx.form可能尚未就绪,建议使用可选链或空值判断。
示例
字段联动:根据类型显 示不同内容
根据其他字段计算当前字段
子表格内读写同行其他列
提交前校验
确认后提交
相关
- ctx.getValue() / ctx.setValue():读写当前字段值
- ctx.blockModel:父区块模型,
ctx.form等价于ctx.blockModel?.form - ctx.modal:确认弹窗,常与
ctx.form.validateFields()、ctx.form.submit()配合 - ctx.exit():校验失败或用户取消时终止流程
ctx.namePath:当前字段在表单中的路径(数组),嵌套字段时用于构造getFieldValue/setFieldValue的 name

