角材料:弹出窗口:在打开窗口并单击按钮时将数据发送给父对象

时间:2020-07-09 07:20:01

标签: angular typescript angular-material angular8 material-dialog

如何获取“角度材质”对话框的值并将其发送给父级?

在它们关闭对话框之后,我知道如何获取数据。 只是好奇如何在对话框仍处于打开状态时,或者特别是在有人按下对话框中的按钮时获取数据。

public openPropertySearchDialog(): void {
  const propertySearchDialogRef = this.propertySearchDialog.open(PropertyGridDialogComponent, 
  {
     width: '1500px',
     height: '950px',
     data: this.propertyList,
     hasBackdrop: false
   });
  
   propertySearchDialogRef.afterClosed().subscribe(result => {
     console.log('propertyResult', result);
   });
}

更新

这将订阅数据。现在,我只需要知道在Dialog组件内按下Button时的数据即可。考虑为按钮按下事件添加另一个订阅,寻找简洁的方法,而不是添加两个订阅。

propertySearchDialogRef .componentInstance.propertyOutput.subscribe((data: any) => {
  console.log('test',data);
});

https://material.angular.io/components/dialog/api

许多在线资源是当窗口关闭时,寻找“打开”并按下一个按钮(不会关闭对话框)

How to pass data to afterClosed() in Angular Material Dialog in Angular 6

Pass several data from Mat Dialog Angular 4 back to parent

1 个答案:

答案 0 :(得分:0)

在弹出组件上,您可以使用Output事件发射器。

  onAdd = new EventEmitter();
  constructor() {
    
  }
  
  onButtonClicked() {
    this.onAdd.emit('test');
  }

在父组件内部,

  openDialog() {
      const ref = this._dialog.open(InnerComponent);
      const sub = ref.componentInstance.onAdd.subscribe((data) => {
        console.log(data);
      });
      dialogRef.afterClosed().subscribe(() => {
        sub.unsubscribe();
      });
  }

这里您正在订阅onAdd事件。

仅当您单击按钮上的按钮时,才会发出事件 (click)事件,致电onButtonClicked()