arco-design / arco-design-vue

A Vue.js 3 UI Library based on Arco Design
https://arco.design/vue
MIT License
2.7k stars 532 forks source link

动态【Form表单】无法使用 setFields 进行状态设置 #2611

Open ostn opened 1 year ago

ostn commented 1 year ago

Basic Info

What is expected?

希望使用 formRef.value.setFields 对动态表单中的某一项进行状态的设置

Steps to reproduce

如下:使用下面代码无法给动态表单数组中的某一条数据设置状态,写法也是参考官网表单Form的FAQ中说明写出来的。

Ex: formRef.value.setFields({ 'configField.list.1.key': { status: 'error', message: '2222 error', }, 'configField.list[1]key': { status: 'error', message: '2222 error', } })

ex2: formRef.value.setFields({ configGroup: { status: 'error', message: 'test error', } })


引用官网 form-item 处的说明 此时,如果想要指定当前 form-item 对应的值为 id: '2222',需要设置 field="people.2.id",值中的分隔符需要使用 .。数组分割也可以使用 [],例如 field="people[2].id"

Extra info

代码业务背景说明:一开始想使用自定义的 validator: (value: string, cb: any) => {} 对动态表单进行校验,但是发现该方法不能传递额外的参数,因此考虑自己校验并使用 formRef.value.setFields 设置动态表单中数组的某一项状态

chinyifei commented 1 week ago

setFields不能设置:model="formData" formData中没有的字段,所以可以换一种思路使用v-model双向绑定进行组件的受控,setFields提供的message和status在form-item标签上也有相应的属性可以替换