具体原因是自定义组件数据格式为:value= [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]这个类型的格式,需要做一个必填校验,也就是左右数据都不得为0的情况=没填
贴一下代码:
period_time: { spanNumber: 23, node: <TheSelectionPeriod />, rules: [ { required: true, message: '缺少指定时间段', }, { validator(rule: Rule[], value: any[]) { const newList = value.map((item: any[]) => Number(item.join(''))); const isEmpty: boolean = Number(newList.join('')) === 0; if (isEmpty) { return Promise.reject(new Error('指定时间段不能为空')); } return Promise.resolve(); }, }, ], },
思路就是把数组的值全部拼接起来,但是因为0=false=null='',所以只需要判断最后拼接好的字符串转为数字类型的话是否等于0即可。