antd vue 表单中子组件怎么做校验?

antd vue 表单中嵌套了自定义的子组件,这个组件内没有表单,请问怎么做校验

<a-form-model-item
     label="name"
     :labelCol="{ span: 6 }"
     :wrapperCol="{ span: 14 }"
     prop="name"
     >
     <TreeList />
</a-form-model-item>

name: [ // 子组件选择了内容,但是这里一直提示请输入,不走下面的自定义校验方法checkName
          { required: true, message: "请输入", trigger: "blur" }, 
          { validator: checkName, trigger: "blur" },
      ],

 const checkName = (rule, value, callback) => {
      if (!value) {
        callback(new Error(""));
      }
      callback();
    };
阅读 3.2k
2 个回答
  1. 走没走自定义校验方法,你肉眼看不出来的
  2. 组件和formitem没有做绑定,缺v-model

看了下antdvFormItem 组件的源码
它向子组件provideonFieldBluronFiledChange方法

useProvideFormItemContext(
      {
        id: fieldId,
        onFieldBlur: () => {
          if (props.autoLink) {
            onFieldBlur();
          }
        },
        onFieldChange: () => {
          if (props.autoLink) {
            onFieldChange();
          }
        },
        clearValidate,
      },
      computed(() => {
        return !!(props.autoLink && formContext.model.value && fieldName.value);
      }),
    );

调用这两个方法会触发验证,所以你在子组件中inject他提供的方法,然后子组件选择了内容,手动调用这两个中的一个,应该就会触发验证

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题