跳转到内容

数组高级用法

本文介绍 Piying-View 中数组的高级特性:增删改操作、deletionMode、groupMode 等。

Piying-View 的 FieldArray 提供以下操作方法:

直接调用 field.action.set(value, index)

field.action.set('newValue', 0); // 将索引 0 的值设为 'newValue'

支持跳过前面的元素直接插入:

field.action.set('value', 5); // 在索引 5 处设置值

直接调用 field.action.remove(index)

field.action.remove(0); // 删除索引 0 的元素

直接调用 field.form.control.updateValue(value)

field.form.control.updateValue(['a', 'b', 'c']); // 完全替换数组内容

直接调用 field.form.control.clear()

field.form.control.clear(); // 清空所有元素

控制数组元素被删除后的处理方式。

删除元素后,数组长度自动缩短:

删除元素后,该位置的值设为 undefined,数组长度保持不变:

控制数组与元组的验证行为。groupMode 在解析 schema 时自动推导,无需手动赋值。

Schema 类型 自动解析的 groupMode 说明
v.tuple() 'default' 固定长度元组:超出长度部分自动截断
v.looseTuple() 'loose' 宽松元组:超出长度部分保留
v.strictTuple() 'strict' 严格元组:超出长度时验证失败
v.array() / v.tupleWithRest() 的 rest 部分 'reset' 数组/可变尾部:不做固定键/长度约束

对象组的 groupModev.object() / v.looseObject() / v.strictObject())见 类型映射

当数组为空时,返回 emptyValue 作为最终值:

FieldArraylength / controls / fixedControls$ / clear() 等属性,以及 Field 层面的 children / fixedChildren / restChildren,属于控件 API,统一见 AbstractControl — FieldArray 特有 API