在它的component.ts中关闭md-dialog

时间:2017-08-24 12:33:32

标签: angular angular-material2 mddialog

我有一个md-dialog组件 - DialogComponent - 我从同级组件中打开 - SiblingComponent - 我想在某些操作后在dialog.component.ts中将其关闭。

DialogComponent基本上是一个带有提交按钮的表单,提交表单会将我带到dialog.component.ts函数,我正在进行一些验证并将数据发送到服务。

验证通过并发送数据后,我想暂停一下,然后自动关闭拨号窗口,但我不知道如何在md-dialog-close

中运行dialog.component.ts之类的内容

3 个答案:

答案 0 :(得分:5)

您可以将MdDialogRef注入对话框组件类,然后使用它关闭它。例如:

export class DialogComponent {

    constructor(private dialogRef: MdDialogRef<DialogComponent >) { }

    someAction() {
        // do your thing here
        this.dialogRef.close(); // <- this closes the dialog. 
        // You can also wrap it in setTimeout() if you want
    }
}

答案 1 :(得分:0)

我到这里是为了寻找类似的情况,但要寻找MatDialog

我的情况是,我有一个包含MatDialog的{​​{1}}和一个包含EditParkingDialogComponent的{​​{1}},为什么这么复杂?因为我正在重用ParkingFormComponent用作表单或对话框。

我需要的是在ParkingFormComponent中更新Parkin时关闭主MatDialog,例如保存数据时。

这是我所做的:

ParkingFormComponent中,当停车场更新时,我会发出一个事件

ParkingFormComponent.component.ts

@Output() parkingUpdated: EventEmitter<any> = new EventEmitter<any>(); updateParking() { ..... this.parkingUpdated.emit(); } (中间组件)中

EditParkingDialogComponent.component.ts

constructor(private dialogRef: MatDialog) { } onParkingUpdated() { this.dialogRef.closeAll(); }

EditParkingDialogComponent.component.html

答案 2 :(得分:-2)

您需要使用父级中的@ViewChild(MyComponent) myComponent;来获取您要访问的组件的引用。

从1个兄弟姐妹中,您需要使用@Output() event = new EventEmitter();向父母发送一个事件,然后在父母中,您可以使用它的参考来访问其他兄弟姐妹。

(您不需要@Output(),您还可以在父@ViewChild(SiblingOneComponent)和@ViewChild(SiblingTwoComponent)中创建两个引用,并在子组件中创建一个变量:parentComponent:ParentComponent。并使用SiblingOneComponent.parentComponent = this;

设置它(在父级中)