原理:change和trigger依赖于组件输入input的事件,数组当然没有相关事件,所以需要监听数组长度,并手动告知form-item,你的数组改变了,需要重新校验。给form-item加上ref。需要注意的是抛出form-item改变信息一定要在下一帧nextTick,不然校验检测不到。
代码:
<el-form-item ref="fileitem" label-width="0" prop="fileSaves">
{{formDData.fileSaves}}
</el-form-item>
data() {
const isHasFile = (rule, value, callback) => {
if (!value || value.length < 1) {
callback(new Error('请上传附件'));
} else {
callback();
}
};
return {
rules: {
fileSaves: [{ required: true, trigger: ['blur', 'change'], validator: isHasFile }]
},
}
}
watch: {
'formData.fileSaves': {
handler (newVal, oldVal) {
if (!newVal || !newVal.length) {
this.$nextTick(() => {
this.$refs.fileitem.$emit('el.form.change');
});
}
}
}
}