如何在Angular中从模式包装器服务公开afterClosed()方法/可观察

如何在Angular中从模式包装器服务公开afterClosed()方法/可观察,angular,typescript,angular-material,Angular,Typescript,Angular Material,我目前正试图通过为自己制作一个小应用来教自己编码和角度。在我的应用程序中,我为角材料ModalDialog制作了一个包装服务。我的应用程序是AngularJS和AngularJS的混合(我已经为此工作了一段时间) 包装器服务如下所示: export class ModalDialogWrapperService { constructor(private dialog: MatDialog, private zone: NgZone) { } openWarningWindow(w

我目前正试图通过为自己制作一个小应用来教自己编码和角度。在我的应用程序中,我为角材料ModalDialog制作了一个包装服务。我的应用程序是AngularJS和AngularJS的混合(我已经为此工作了一段时间)

包装器服务如下所示:

export class ModalDialogWrapperService {

  constructor(private dialog: MatDialog, private zone: NgZone) {
  }
  openWarningWindow(warning) {

    this.zone.run(() => {
        const dialogRef = this.dialog.open(WarningComponent, {
          data: warning,
          panelClass: 'dialog--warning'
        });
        dialogRef.afterClosed().subscribe(() => {
          console.log('I need access to this');
        });
    });
  }
这是一个很好的角度组件,我可以通过导入我的服务并调用这样的方法来提高模式,下面是一个使用服务的组件方法:

// component code
public raiseWarning(warning: any): void {
    this.modalDialogWrapperService.openWarningWindow({
      type: warning.type,
      id: warning.id,
      tags: warning.tags
    });
  }
这是伟大的,但我需要访问时,对话框关闭和它带来的数据回来。我可以在我的服务中捕获它,请参阅
控制台.log
,但我无法在组件中访问它。我应该像这样在组件中添加代码吗

// component code
public raiseWarning(warning: any): void {
    const dialogRef = this.modalDialogWrapperService.openWarningWindow({
      type: warning.type,
      id: warning.id,
      tags: warning.tags
    });

    dialogRef.afterClosed().subscribe(() => {
          console.log('I am in the component');
    });
  }
我得到一个未定义的错误,我的问题是,如何将
afterClosed().subscribe
从包装器服务公开给组件。非常感谢您的建议。我是否需要像这样从服务中
返回
对话框ref

openWarningWindow(warning) {

    this.zone.run(() => {
        // const dialogRef =
        return this.dialog.open(WarningComponent, {
          data: warning,
          panelClass: 'dialog--warning'
        });
    });
  }

我用修改过的组件代码尝试了一下,但没有成功。我收到错误
TypeError:无法读取未定义的属性'afterClosed'

我没有从openWarningWindow中看到return语句。我怀疑情况可能是这样的:

openWarningWindow(warning) {

return this.zone.run(() => {
    // const dialogRef =
    return this.dialog.open(WarningComponent, {
      data: warning,
      panelClass: 'dialog--warning'
    });
});

}

我已经对此进行了分析,我似乎能够捕捉到我的组件中可观察到的内容。现在,我只需要将数据从
警告组件
返回到调用服务/引发模式的组件。