我有一个md-dialog组件 - DialogComponent
- 我从同级组件中打开 - SiblingComponent
- 我想在某些操作后在dialog.component.ts
中将其关闭。
DialogComponent
基本上是一个带有提交按钮的表单,提交表单会将我带到dialog.component.ts
函数,我正在进行一些验证并将数据发送到服务。
验证通过并发送数据后,我想暂停一下,然后自动关闭拨号窗口,但我不知道如何在md-dialog-close
dialog.component.ts
之类的内容
答案 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;
设置它(在父级中)