关于 ant-design-vue 的深度校验方法(有坑)

<template>
    <div>
        <a-form :model="form" ref="formRef">
            <a-form-item
                ref="formaaaaabbbbbRef"
                :name="[ 'aaaaa', 'bbbbb' ]"
                :rules="[ { required: true, message: ' form.aaaaa.bbbbb 不能为空', trigger: 'blur' } ]">
                <a-input v-model:value="form.aaaaa.bbbbb"></a-input>
            </a-form-item>
            <a-form-item
                name="ccccc"
                :rules="[ { required: true, message: ' form.ccccc 不能为空', trigger: 'blur' } ]">
                <a-input v-model:value="form.ccccc"></a-input>
            </a-form-item>
            <a-form-item
                name="ddddd"
                :rules="[ { required: true, message: ' form.ddddd 不能为空', trigger: 'blur' } ]">
                <a-input v-model:value="form.ddddd"></a-input>
            </a-form-item>
        </a-form>
        <a-button @click="checkVal('bbbbb')">点击校验 form 中 aaaaa 中的 bbbbb</a-button>
        <a-button @click="checkVal('ccccc')">点击校验 form 中的 ccccc</a-button>
        <a-button @click="checkVal('ddddd')">点击同时校验 form 中的 ccccc 和 ddddd</a-button>
        <a-button @click="checkVal('all')">校验所有</a-button>
        <a-button @click="checkVal('reset')">重置并移除校验结果</a-button>
    </div>
</template>
<script>
import { ref } from 'vue';

export default {
    components: {},
    setup() {
        const form = ref({
            aaaaa: {
                bbbbb: ''
            },
            ccccc: '',
            ddddd: ''
        });

        const formRef = ref(null)

        const formaaaaabbbbbRef = ref(null)

        const checkVal = (type) => {
            if(type == 'bbbbb'){
                // formRef.value.validate('aaaaa.bbbbb') // 失败
                // formRef.value.validate(['aaaaa', 'bbbbb']) // 失败
                // formRef.value.validateFields('aaaaa.bbbbb') // 失败
                // formRef.value.validateFields(['aaaaa', 'bbbbb']) // 失败
                // formRef.value.validateFields('aaaaa["bbbbb"]') // 失败
                // formRef.value.validateFields('aaaaa[bbbbb]') // 失败
                // formRef.value.validate([['aaaaa', 'bbbbb']]) // 成功
                formRef.value.validateFields([['aaaaa', 'bbbbb']]) // 成功
            }
            if(type == 'ccccc'){
                // formRef.value.validate(['ccccc']) // 成功
                // formRef.value.validate('ccccc') // 成功
                // formRef.value.validateFields('ccccc') // 成功
                formRef.value.validateFields(['ccccc']) // 成功
            }
            if(type == 'ddddd'){
                // formRef.value.validate(['ddddd']) // 成功
                // formRef.value.validate('ddddd') // 成功
                // formRef.value.validateFields('ddddd') // 成功
                formRef.value.validateFields(['ccccc', 'ddddd']) // 成功
            }
            if(type == 'all'){
                formRef.value.validate()
            }
            if(type == 'reset'){
                formRef.value.resetFields()
            }
        };

        return {
            form,
            formRef,
            checkVal,
            formaaaaabbbbbRef
        };
    }
};
</script>
<style lang="less" scoped></style>
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值