1.公用同一个表单;
2.选择不同的账号类型,下面对应的表单项不同,但存在公用同一个字段的情况;
3.在切换另一个账号类型,点击确认,校验内容具有文字提示;
4.在账号对应input中输入内容,仍提示请输入账号字样;没走到校验里面(拿不到输入的内容);
v-if在操作dom的时候,在根节点进行的删减,而element在封装的时候没考虑这块,导致rules判断的时候,无法取到v-if添加进来的prop值;
在 el-form-item 中添加一个属性key,key的值是唯一的(一般key和prop写一样的内容即可,因为rules里面的东西不能重复定义,所以肯定是唯一的。)
- <el-form-item
- prop="accountName"
- key="accountName"
- label="账号"
- :rules="[
- { required: true, message: '请输入账号', trigger: 'blur' },
- { trigger: 'blur', validator: validateAccount },
- ]"
- >
- <el-input
- v-model.trim="CurObject.accountName"
- placeholder="请输入账号"
- name="accountName"
- type="text"
- tabindex="1"
- autocomplete="on"
- clearable
- />
- </el-form-item>
另外需要注意的是,在切换账号类型的时候(建议使用watch事件);
1.先将表单对应的字段值,进行置空(存在字段公用的情况,避免值,缓存);
2.调用表单提供的 this.$forceUpdate();
3. this.resetForm('ruleForm'),清除上一次的校验;