解决:Cannot read properties of undefined (reading ‘validate‘)问题

问题:Element UI使用表单校验功能控制台出现Cannot read properties of undefined (reading 'validate')报错

解决:在 <el-form :model="form" :rules="rules">添加 ref="form",form为自定义的表单名称

html 复制代码
 <el-form :model="form" :rules="rules" ref="form"></l-form>

完整案例

添加/修改表单代码

html 复制代码
<!-- 新增/更新 -->
    <div>
      <el-dialog :title="(form.id == null ? '新增' : '更新')" :visible.sync="dialogFormVisible" width="40%">
      <el-form :model="form" :rules="rules" ref="form">
        <el-form-item label="学号" prop="number" label-width="20%">
          <el-input v-model="form.number" autocomplete="off" placeholder="请输入学号" style="width:80%"/>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="resetForm('form')">取 消</el-button>
        <el-button type="primary" @click="submit('form')">确 定</el-button>
      </div>
    </el-dialog>
    </div>

js

javascript 复制代码
<script>
    export default {
      data() {
        return {
            // 表单
            form:{},
            // 表单模态框
            dialogFormVisible:false,
            // 新增/更新表单校验
            rules: {
                 number: [
                    { required: true, message: '学号不能为空', trigger: 'blur' }
                 ],
             },
    	}
    }

    methods:{
    	// 提交表单数据
        async submit(form){
          this.$refs[form].validate(async (valid) => {
            if (valid) {
              await this.apiInsert()
              this.select()
            }
          })
        },
        apiInsert(){
          return new Promise(resolve => {
            insert(this.form).then(res => {
              if(res.code === 200){
                this.dialogFormVisible = false
                resolve()
              }else{
                this.$message.error(res.message.message)
                resolve()
              }
            })
          })
        },
        // 取消
        resetForm(form) {
          this.dialogFormVisible = false
          this.$refs[form].resetFields();
        },
    }
  }
</script>
相关推荐
十八旬几秒前
苍穹外卖项目实战(日记十)-记录实战教程及问题的解决方法-(day3-2)新增菜品功能完整版
java·开发语言·spring boot·mysql·idea·苍穹外卖
芝士加4 分钟前
还在用html2canvas?介绍一个比它快100倍的截图神器!
前端·javascript·开源
阿虎儿6 分钟前
React 引用(Ref)完全指南
前端·javascript·react.js
前端小大白31 分钟前
JavaScript 循环三巨头:for vs forEach vs map 终极指南
前端·javascript·面试
晴空雨32 分钟前
面试题:如何判断一个对象是否为可迭代对象?
前端·javascript·面试
这周也會开心33 分钟前
Java-多态
java·开发语言
Forward♞35 分钟前
Qt——网络通信(UDP/TCP/HTTP)
开发语言·c++·qt
阿虎儿35 分钟前
React 事件类型完全指南:深入理解合成事件系统
前端·javascript·react.js
XH华36 分钟前
C语言第十三章自定义类型:联合和枚举
c语言·开发语言
Hilaku1 小时前
前端需要掌握多少Node.js?
前端·javascript·node.js