解决 Uncaught TypeError: deptFormRef.value.validate is not a function 错误
根据提供的代码和错误信息,问题可能出在以下几个地方:
- 在代码中,
deptFormRef是一个 ref,并且它的初始值是一个组件实例,而不是一个 DOM 元素。在提交表单时,调用deptFormRef.value.validate方法会导致TypeError,因为组件实例没有validate方法。
解决方法是将 deptFormRef 的初始值设置为 DOM 元素,可以通过在组件的 mounted 钩子函数中获取 DOM 元素的引用并将其赋值给 deptFormRef。
const deptFormRef = ref(null);
// ...
mounted() {
deptFormRef.value = this.$refs.deptFormRef;
}
// ...
- 在模板中,
deptFormRef应该绑定到el-form组件的ref属性上,而不是el-tree-select组件的ref属性上。所以需要将deptFormRef的绑定修改为:
<el-form ref="deptFormRef" :model="formData" :rules="rules" label-width="120px">
- 在
handleSubmit方法中,validate方法的回调函数参数类型应为boolean,而不是any。修改为:
deptFormRef.value.validate((valid: boolean) => {
// ...
});
综上所述,修改后的代码应如下所示:
const deptFormRef = ref(null);
function handleSubmit() {
loading.value = true;
deptFormRef.value.validate((valid: boolean) => {
console.log("按下了提交按钮");
if (valid) {
addOrUpdateDept(formData)
.then(() => {
ElMessage.success("操作成功");
closeDialog();
resetQuery();
})
.finally(() => (loading.value = false));
}
});
}
<el-form ref="deptFormRef" :model="formData" :rules="rules" label-width="120px">
<el-form-item label="上级部门" prop="parentId">
<el-tree-select v-model="formData.parentId" clearable :data="deptList" node-key="id"
check-strictly :default-expanded-keys="[formData.parentId]"
:default-checked-keys="[formData.parentId]" :props="{ label: 'deptId', value: 'deptId' }"
:suffix-icon="CaretBottom" style="width: 450px" />
</el-form-item>
</el-form>
原文地址: https://www.cveoy.top/t/topic/qhmf 著作权归作者所有。请勿转载和采集!