vue => element 当dialog嵌套在其他组件中 打开和关闭都会有遮罩层

858 阅读1分钟

情况 外层是抽屉el-drawer ,抽屉 el-drawer里面是封装的其他组件

  • 结构如下
  • 直接嵌套的dialog不会出现遮罩层
  • 但是如果封装成了组件再点击事件打开的话,会出现遮罩层,并且关闭后遮罩层还会出现
  • 所以应该进行如下操作

在这里插入图片描述

未修改前

<el-drawer>
		<组件1>
			<el-dialog组件2>
				<div >
					<el-dialog  >
					</el-dialog>
				</div>
			</el-dialog组件2>
		</组件1>
</el-drawer>

在这里插入图片描述

修改BUG后

  • 将内层 Dialog 的该属性设置为 true,它就会插入至 body 元素上,从而保证内外层 Dialog 和遮罩层级关系的正确。
<el-drawer>
		<组件1>
			<el-dialog组件2>
				<div :modal-append-to-body="false" append-to-body>
					<el-dialog  append-to-body>
					</el-dialog>
				</div>
			</el-dialog组件2>
		</组件1>
</el-drawer>

总结:

  • 在父级的盒子外面添加一个 :modal-append-to-body="false" append-to-body
  • 在展现的dialog加一个 append-to-body

如果还有,最外层的抽屉设置为:modal="false"即可