在表单开发中,经常需要实现组件之间的联动行为,例如当某个输入框的值满足特定条件时,动态显示或隐藏其他组件。表单设计器 提供了强大的组件联动功能,通过 control 配置项实现组件的加载、显示、禁用和必填等状态控制。

数据结构

type Control =  Array<{
  //通过内置条件控制,和`handle`二选一
  value?: any;
  //内置的条件,可以和`value`组合使用
  condition?: '==' | '!=' | '<>' | '>' | '>=' | '<' | '<=' | 'in' | 'notIn' | 'on' | 'notOn' | 'between' | 'notBetween' | 'empty' | 'notEmpty';
  //自定义控制条件
  handle?: (val: any, api: Api) => boolean;
  //控制对应规则的显示,禁用,必填. 默认值为 if
  method?: 'if' | 'enabled' | 'required';
  //控制的字段,(对应组件的字段ID或者编号)
  rule: string[];
}>

注意:组件值必须与 value 严格全等(包括数据类型完全一致)。

method 选项

键名 配置项 说明
if 条件渲染 控制组件的显示/隐藏状态
required 必填验证 设置字段是否为必填项
disabled 禁用状态 控制组件是否可交互

condition 选项

键名 运算符 说明 值类型 示例
== 全等 组件值完全等于value Any value: 10
!= 不全等 组件值不等于value Any value: “error”
<> 不全等 组件值不等于value(同!=) Any value: false
> 大于 组件值大于value Number value: 100
>= 大于等于 组件值大于等于value Number value: 18
< 小于 组件值小于value Number value: 0
<= 小于等于 组件值小于等于value Number value: 100
in 包含 组件值存在于value数组中 Array value: [1,2,3]
notIn 不包含 组件值不存在于value数组中 Array value: [“a”,”b”]
on 包含值 value存在于组件值(数组)中 String Number
notOn 不包含值 value不存在于组件值(数组)中 String Number
between 区间内 组件值在value[0]和value[1]之间 Array[2] value: [10,20]
notBetween 区间外 组件值不在value[0]和value[1]之间 Array[2] value: [0,100]
empty 为空 组件值为空时通过验证 - value: true
notEmpty 非空 组件值不为空时通过验证 - value: true
pattern 正则 用正则表达式验证组件值 String value:’^1\d{10}$’ (不需要前后的”/“)

联动示例
实现表单中手机号(Ffb7m8y7e77zalc)与验证码(Ffa7m8y7eu9eaoc)字段的联动显示:当手机号输入不为空时,才展示验证码输入框。

在联动数据中配置联动规则

注意:必须严格按指定数据类型配置,否则会触发内容语法错误提示。

更多示例

控制组件显示状态

通过配置规则来控制表单中特定字段(如field1、field2)的显示状态,当指定条件满足时(例如值为’1’),可以动态显示或隐藏这些相关字段。

[{
    value: '1',
    rule: ['field1', 'field2']
}]

控制组件禁用状态

通过配置规则来控制表单中特定组件(如field1、name2)的禁用状态,当指定条件满足时(例如值为’1’),可以动态启用或禁用这些相关字段的交互功能。

[{
    value: '1',
    method: 'disabled',
    rule: ['field1', 'name2']
}]

计算组件显示状态

使用自定义函数来控制表单字段的显示条件,通过handle方法判断字段值是否为’ok’或’no’,从而动态决定指定字段的显示或隐藏状态。

[{
  "handle": function(val, api) {
    return val === 'ok' || val === 'no';
  },
  "method": "if",
  "rule": ["Ffa7m8y7eu9eaoc"]
}]
文档更新时间: 2025-12-26 15:54   作者:admin