在后台中有个表单是根据一个类型动态获取的,切换类型后根据数据动态渲染的 el-form-item。
不切换类型一切正常,设置的验证项都会验证,没填的时候会直接拦截。
一切换类型,发现el-form-item 的红*还在,但是表单没有走验证,直接通过了!!!
在组件的mounted中添加了addField,removeField回调函数,打印了一下Form 源码中的fields 字段(组件内部收集的需要验证的字段),发现经过切换后 fields 空了,el-form-item 销毁的时候把字段清除了,但是 el-form-item 重新渲染的时候没有把字段加进去。
一时不知道如何去修改,回顾了一下 生成el-form-item 的代码
<el-form-item v-for="(item,i) in sendRuleInfo" :key='i' ....
这个key是根据数组的index来的,刷新一下index就变了,如果把key 换成item的 id字段会怎么样?
这样这个key就不会变了。
经过这样修改后,发现就是经过切换类型,form-item 重新生成,fields 也不会清空了,迷茫了两天的问题就这样莫名其妙的解决了