Angular Material:弹出窗口 Window:在 Window 打开并单击按钮时向父级发送数据

Angular Material: Popup Window: Send Data to Parent while Window is Open and Button Click

如何获取 Angular Material 对话框的值,并将其发送给父级?

我知道如何在他们关闭对话框后获取数据。 只是好奇如何在对话框仍然打开时获取数据,或者特别是当人们在对话框中按下按钮时。

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 时的数据。考虑为按钮按下事件添加另一个订阅,寻找干净的方式,而不是添加 2 个订阅。

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

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

许多在线资源都是在 Window 关闭时寻找打开并按下按钮(不关闭对话框)

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

Pass several data from Mat Dialog Angular 4 back to parent

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

  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()