7

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

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

验证通过并发送数据后,我想做一些超时,然后自动关闭拨号窗口,但我不知道如何运行类似md-dialog-closeindialog.component.ts

4

3 回答 3

12

You can inject an MdDialogRef into the dialog component class, and use that to close it. Example:

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
    }
}
于 2017-08-24T12:52:42.680 回答
0

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

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

我需要的是在保存数据的示例MatDialog中更新 Parkin 时关闭 main。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

<app-parking-form [mode]="formMode" [parkingModel]="currentParking" (parkingUpdated)="onParkingUpdated()"></app-parking-form>
于 2020-05-04T01:40:15.503 回答
-2

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

从 1 个兄弟姐妹中,您需要通过 using 向父级发出事件@Output() event = new EventEmitter();,然后在父级中,您可以通过使用它的引用来访问另一个兄弟姐妹。

(你不需要@Output(),你也可以在父组件@ViewChild(SiblingOneComponent) & @ViewChild(SiblingTwoComponent) 中创建两个引用,在子组件中创建一个变量:parentComponent: ParentComponent。并设置它(在parent) 通过使用 SiblingOneComponent.parentComponent = this;

于 2017-08-24T12:51:27.430 回答