如何在 Mat table 中的每一行的按钮单击事件下设置对话框的位置?

How can I set position of a dialog box under the button click event of each row in Mat table?

这是我的示例代码。 I created code here please see my working code here

我尝试设置一个对话框的位置

dialogConfig.position = { top: '370px',left: '500px'}

但是对于每一行,它都在相同的位置打开。

在这里,我需要在“更改请求”按钮上的每一行下方打开一个对话框。

以下代码用于对话框

openDialog(Id, Currency, Amount, Reason, StatusDescription, payment) {
const dialogConfig = new MatDialogConfig();

dialogConfig.disableClose = true;
dialogConfig.autoFocus = true;

dialogConfig.data = {
  Id: Id,
  Reason: Reason,
  StatusDescription: StatusDescription
};
 dialogConfig.position =  {
    top: '370px',
    left: '500px'
  }


const dialogRef = this.dialog.open(EditingDialogComponent, dialogConfig);
dialogRef.afterClosed().subscribe(
  data => {
    console.log("Dialog output:", data)
   
  }
);

}

我假设您想在打开对话框的按钮正下方显示对话框。这可以通过使用按钮的坐标定位对话框来完成。

我们可以使用事件侦听器提供的事件参数来做到这一点。只需在视图文件中 openDialog 函数调用的开头添加 $event,并在 openDialog 的函数定义中添加事件参数。我们可以使用 event.target.getBoundingClientRect() 获取元素的相对视口位置。这将包含目标元素(在我们的示例中为按钮)的 x、y 坐标以及宽度和高度。您可以使用 x 和 y 坐标作为对话框配置的值。

下面已经完成了URL

https://stackblitz.com/edit/angular-zw5byw?file=src/app/payments/payments.component.ts

我已经使用宽度和高度属性(以及一些常量)在按钮周围移动对话框。随意根据您的需要进行调整