前言
在使用ElementUI官网的对话框时在同一个页面调用没毛病,但是想把它独立出来成为一个可重复用的组件的时候,就会发现弹出有问题,即使我们已经在子组件里设置了一个props监听状态。可是实现的效果如图,会造成框架自身带有的右上角×回调有问题,如下图:

报错,在子组件里修改了父组件的值,在这里我们应该给父组件提供一个信号,让父组件去修改子组件的值才行
在vue2.0中子组件中不能修改父组件的状态,否则在控制台中会报错。
解决方法:
在子组件里添加回调函数监听:before-close="cancelRegister"
在父组件里添加监听v-if="addrulesonoff",
当需要关闭对话框时,在cancelRegister函数里修改addrulesonoff的状态并将其传给父组件,让父组件去修改子组件的props值就可以啦
子组件:
<template>
    <div class="addTerminalDialog">
        <el-dialog
        title="提示"
        :visible.sync="addDialogVisable"
        :modal-append-to-body="false"
        :close-on-click-modal="false"
        :before-close="cancelRegister" 
        width="30%"
        center>
        <span>需要注意的是内容是默认不居中的</span>
        <span slot="footer" class="dialog-footer">
            <el-button @click="cancelRegister">取 消</el-button>
            <el-button type="primary" @click="handleSubmit">确 定</el-button>
        </span>
        </el-dialog>
    </div>
</template>
<script>
export default {
 name: 'addTerminalDialog',
 props: {
     addDialogVisable: {
         type: Boolean,
         default: false
     }
 },
 data() {
     return {
         addrulesonoff: 'false'
     }
 },
 methods: {
    cancelRegister() {
        this.addrulesonoff = false
        this.$emit('dialog-cancel')
    } 
 }
}
</script>
<style>
</style>    
父组件:
 <add-terminal-dialog
    v-if="addrulesonoff"
    :add-dialog-visable="addrulesonoff"
     @dialog-sure="sureRegister"
     @dialog-cancel="closeHanlder">
</add-terminal-dialog>

实现效果:
