element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误?

使用element-ui制作一个表单,通过按钮控制表单的disabled属性。每次点击按钮切换disabled的状态时,控制台报错:
Cannot read properties of undefined (reading 'getBoundingClientRect')

代码如下:

<template>

<div class="container">

<el-form v-model="formData" :disabled="formDisabled" label-position="top">

<el-form-item label="标题">

<el-input v-model="formData.title"></el-input>

</el-form-item>

<el-form-item label="城市">

<el-select v-model="formData.city">

<el-option

v-for="item in options"

:key="item.value"

:label="item.label"

:value="item.value"

>

</el-option>

</el-select>

</el-form-item>

</el-form>

<el-button type="primary" @click="handleClick">{{btnName}}</el-button>

</div>

</template>

<script>

export default {

name: "TestFormDisable",

data(){

return {

formData:{

title:"Hello",

city:2,

},

options:[

{label:"北京",value:1},

{label:"广州",value:2},

{label:"上海",value:3},

{label:"深圳",value:4},

],

formDisabled:false,

btnName: "禁用",

}

},

methods:{

handleClick() {

this.formDisabled = !this.formDisabled;

this.btnName = this.formDisabled ? "可用" : "禁用";

}

}

}

</script>

效果:
未点击时:
element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误?
点击按钮后:表单会禁用,但是控制台报错
element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误?

dubug了一下,发现el-select执行了resetInputHeight方法,但是$refs中并没有tags,接下来tags.getBoundingClientRect()方法报错报错。
element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误?

el-select中的部分源码:
computed中的selectDisabled
element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误?
监听selectDisabled,执行resetInputHeight
element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误?
resetInputHeight方法
element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误?
template 中ref = tags
element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误?

经过测试,设置为多选添加multiple属性后不会报错


回答:

使用你贴上来的示例代码并没有出现报错信息,可能是因为热跟新导致的问题。

同时我也去看了一下 el-select 的源码,发现基本上都加上了 if (reference && reference.$el) 这样的条件判断。只有一个 resetInputWidth 没有添加。
不过是选择组件宽高放生变化之后才会触发的。你可以参考一下。


回答:

在 element-ui 2.15.4 版本下遇到了相同的问题。

升级到 2.15.12 问题不在复现。

以上是 element-ui修改表单的disabled属性,能生效但是会报错,如何处理错误? 的全部内容, 来源链接: utcz.com/p/932967.html

回到顶部