25

我正在使用 MdDialogModule 来显示一个对话框窗口,其中包含一个输入字段。模态打开正常,我可以在输入字段中输入文本并提交,但是在单击提交按钮时,我希望输入表单中的数据返回到调用对话框组件的主组件并关闭对话框.

我该怎么做呢?我能够将数据传递给 MdDialog 组件,但没有找到任何有关如何从 MdDialogComponent 向组件返回数据的资源。

我的 Dialog 组件代码如下所示

import { Component, OnInit, InjectionToken, Inject } from '@angular/core';
import { MD_DIALOG_DATA, MdDialogRef } from "@angular/material";

@Component({
  selector: 'app-add-book',
  templateUrl: './add-book.component.html',
  styleUrls: ['./add-book.component.css']
})
export class AddBookComponent {

  constructor() { }

}

主组件中调用对话框的方法如下所示。现在没有返回响应,它返回未定义,因为我还没有弄清楚。

openCreateDialog() {
    let dialogRef = this.dialog.open(AddBookComponent)
      .afterClosed()
      .subscribe(response => {
        console.log(response);
      });
  }
4

3 回答 3

45

首先,您需要添加MdDialogRef到您的对话框组件

export class AddBookComponent {
  constructor(private dialogRef: MdDialogRef<AddBookComponent>) { }
}

然后使用dialogRef.close返回数据

save() {
  this.dialogRef.close({ data: 'data' });
}
于 2017-08-12T08:13:57.267 回答
11

首先感谢哈利的评论...

下面是整个相关脚本

组件 ts:

  let dialogRef = this.dialog.open(DataListDialogComponent, dialogConfig).afterClosed()
  .subscribe(response => {
    console.log(response);
  });

对话 ts:

    this.dialogRef.close({data:'data'});
于 2018-12-28T08:39:29.273 回答
1

“dialog.open”可用于打开对话框组件。

您可以通过添加第二个参数来指定要发送到对话框组件的数据。这可以包含更多信息,如宽度和高度检查文档。

要关闭,您可以使用 ref.close()。

如果您希望从对话框中获取数据,那么您可以使用 ref.componentInstance.updatedSelectedArms 这是一个在需要时触发的事件

var ref = this.dialog.open(SelectLoadingArmComponent, {
  width: '500px',
  data: { 
    loadingArms: this.loadingArms, 
    selectedloadingArms: this.selectedloadingArms
  }
});

ref.componentInstance.updatedSelectedArms.subscribe(
  (data) => {
    console.log(data)
    ref.close()
  }
);
于 2019-01-18T10:52:46.337 回答