Arco Design Modal对话框组件嵌套form表单组件实现验证成功后提交表单

问题背景

Arco Design组件库中,Form表单组件可以通过设定表单项的rules属性或在表单中绑定rules数组实现表单验证。如果想实现表单全部验证通过后再提交表单,则可以使用form组件的submit-success事件。
然而,当form组件存在于modal组件中时,modal组件的确认按钮并不会触发form组件的验证,即使给确认按钮加上了:ok-button-props="{ htmlType: 'submit' }的属性。
本例使用Vue3+TypeScript。

解决方案

查看form组件自带的函数。
在这里插入图片描述
我们发现可以主动触发它的validate()函数对表单进行校验。

modal组件提供了异步关闭对话框的方式。on-before-ok指定的回调函数如果返回了false,就不会触发ok事件。
在这里插入图片描述
首先为modal组件绑定号on-before-ok函数:

:on-before-ok="handleSubmit"

要调用组件的方法,需要获取到组件实例。首先为form组件绑定ref参数

ref="registerFormRef"

随后,在handleSubmit函数中调用实例方法。

const registerFormRef = ref(null);

const handleSubmit = async () => {
  const error = await registerFormRef.value?.validate();
  if (!error) {
  	//提交表单逻辑
  	return true;//return true就会关闭对话框
  }
  	return false;
}

比较值得注意的一点是,vue3不再支持this.$refs的方式访问ref实例方法,只能通过.value的方式。这种方式ide不会联想出函数列表。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值