element-plus [Component] el-form嵌套带dialog的子组件 disabled以后 dialog内层按钮都没法使用。

aurhwmvo  于 8个月前  发布在  其他
关注(0)|答案(2)|浏览(190)

Bug Type: Component

Environment

  • Vue Version: 3.2.45
  • Element Plus Version: 2.2.26
  • Browser / OS: UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
  • Build Tool: Vite

Reproduction

  • el-dialog
  • el-form
  • el-form-item

Element Plus Playground

Steps to reproduce

  1. <script setup lang="ts">
  2. import { ref, version as vueVersion } from 'vue'
  3. import { version as EpVersion } from 'element-plus'
  4. import { ElementPlus } from '@element-plus/icons-vue'
  5. import comp from './Comp.vue'
  6. const msg = ref('Hello World!')
  7. </script>
  8. <template>
  9. <el-form disabled>
  10. <el-form-item label="label测试">
  11. <comp></comp>
  12. </el-form-item>
  13. </el-form>
  14. </template>

###子组件

  1. <script setup lang="ts">
  2. import { ref, version as vueVersion } from 'vue'
  3. import { version as EpVersion } from 'element-plus'
  4. import { ElementPlus } from '@element-plus/icons-vue'
  5. const msg = ref('Hello World!')
  6. const visibled = ref(false)
  7. const initDialog = ()=>{
  8. visibled.value= true
  9. }
  10. defineExpose({
  11. initDialog
  12. })
  13. </script>
  14. <style>
  15. p{
  16. margin: 0;
  17. padding: 0;
  18. color: blue;
  19. }
  20. </style>
  21. <template>
  22. <p @click="initDialog">打开详情信息</p>
  23. <el-dialog v-model="visibled">
  24. <template #footer>
  25. <el-button type="primary" @click="visibled = false">关闭弹窗</el-button>
  26. </template>
  27. </el-dialog>
  28. </template>

What is Expected?

el-dialog按钮不应该被禁用

What is actually happening?

el-dialog按钮被禁用

Additional comments

希望优化

tgabmvqs

tgabmvqs1#

由于组件内部会通过inject el-form的配置得到最终的disabled,它处于禁用的form下面,那它一定是禁用状态,我认为这个默认表现上是没问题的,至于是否要优化或者怎么优化还需要讨论一下,建议在discussions发起讨论。
临时解决方案就是给你的dialog内部套一个el-form

qvsjd97n

qvsjd97n2#

在旧版的是做了一次修改的,可以参考 @chenxch
ElemeFE/element#21375

相关问题