antd vue form 手动校验_elementui 中自定义组件如何触发校验

本文用到的 element-ui 版本为 2.14.0,vue版本为 2.6.11。

背景

自定义开发组件,比如一个输入组件,在 el-form-item 中使用,失去焦点没法触发校验。虽然调用 validate 方法不会校验通过,但是没有像官方组件一样,输入后,校验提示应该自动消失。

4ed6fb6bc0a691123a8195dbc4e2e22f.png

f4882ce5511d46476ea59818758a5171.png

解决方案

自定义组件可以在失去焦点后,主动去调用 el-form 提供的 validate 方法,校验单个字段。但这个方法自定义组件就需要先向上遍历父级,拿到 el-form 组件,当组件不放在 el-form 中时,这个逻辑就是多余的。那么我们可以看官方组件是如何做的。

ef335d45797b6d087ba11033d3d0f736.png

我们可以采用官方的方法,不过需要引入 emitter 才能使用 dispatch 方法。

db01909fb434b42b5c93bca72562082a.png

这种方法是最推荐的,组件之间是解耦的。

当然如果你不想引入 emitter 的话,可以采用下面的方法。

73d4b48b32f8418fa7701770a48db839.png

可以看到官方组件中通过 inject,来跨级调用 el-form-item,那么我们自定义组件中也可以采用这种方法,这样可以很方便的调用 el-form-item 提供的 validate 方法。

handleBlur(e) {
this.$emit("input", e.target.value);
if (this.elFormItem) {
this.elFormItem.validate("blur");
}
},

当然这种方法依赖了 el-form-item 的 validate 方法,如果升级了 el-form-item 调整了此方法,那么也需要跟着调整。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值