Element 版本:v2.15.3
如下代码所示:有一个上传文件的 input 组件,在更新的时候,如果不上传文件表示不更新,如果要更新则点击 「重新上传」按钮将上传组件显示出来
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item v-if="!updateDocument" label="文档">
<el-button @click="updateDocument = true">重新上传el-button>
<base-tips margin-left="15px">如需变更请重新上传文档base-tips>
el-form-item>
<el-form-item v-if="updateDocument" label="文档" prop="document">
<input
:accept="supportFilesType"
ref="documentFile" type="file" @change="documentFileChange"/>
el-form-item>
el-form>
也就是如上图:不更新的话,该字段不是必须的,提交的时候就不会被校验,如果更新的话,就要让这个字段为必填项。
上述代码:从页面上看是正常的,有前面那个红色的 * 号,但是在提交的时候,并没有触发验证。
首先:查看表单组件的信息,最终在 Field 这个属性下发现了问题
console.log(this.$refs.form)
这种情况的最主要原因是:表单组件没有触发重新渲染,解决方案靠谱的有:
重新上传
如需变更合同请重新上传文档