如何使用 MatDialog 将行数据或数组对象传递给 Angular 中的组件

Posted

技术标签:

【中文标题】如何使用 MatDialog 将行数据或数组对象传递给 Angular 中的组件【英文标题】:how to pass a row data or the object of an array to a component in Angular using MatDialog 【发布时间】:2021-12-15 00:05:51 【问题描述】:

我想要的是,当我单击特定行的按钮时,它应该打开一个 matDialog 框,它应该向我显示该行的所有内容。 这是html文件

                           <tr *ngFor="let u of users">
                                <td data-label="ID">u.name</td>
                                <td>
                                    <button (click)="toggle(u)" mat-button type="button" class="btn btn-primary">
                                        Show Details
                                    </button>
                                </td>
                            </tr>

这是我的 ts 文件


users = [
    
      'name':'arjun'
    ,
    
      'name':'Karan'
    
  ]


toggle(userRow:any)
    const dialogConfig = new MatDialogConfig();
    dialogConfig.disableClose = false;
    dialogConfig.autoFocus = true;
    dialogConfig.;
    this.dialog.open(UserDetailsPopupComponent, dialogConfig);
  

这是我将使用 MatDialogue 打开的组件 (UserDetailsPopUp) 的 html 文件

<h1>Hellou.name</h1>

但我无法将切换功能中的行数据发送到此组件。我怎么做?并加载该数据并显示它。

【问题讨论】:

【参考方案1】:

像这样向对话框组件发送数据:

toggle(userRow:any)
    const dialogConfig = new MatDialogConfig();
    dialogConfig.disableClose = false;
    dialogConfig.autoFocus = true;
    dialogConfig.;
    dialogConfig.data = userRow;
    this.dialog.open(UserDetailsPopupComponent, dialogConfig);
  

并捕获UserDetailsPopupComponent中的数据

constructor(@Inject(MAT_DIALOG_DATA) public _data: any) 

_data 包含 userRow 数据。

【讨论】:

非常感谢@Tushar,嗯,真的救了我的命.. 非常感谢

以上是关于如何使用 MatDialog 将行数据或数组对象传递给 Angular 中的组件的主要内容,如果未能解决你的问题,请参考以下文章

Angular Material MatDialog 未正确销毁

小程序页面传递数据 、传递数组对象 小程序传值

PHP json_encode将行作为对象而不是数组返回[重复]

vue 父组件传数组或对象给子组件时 子组件修改值父组件也会做相应修改

如何在不使用数据透视的情况下将行转换或转置为 SQL 中的列?

axios将数据从前端传到后端是对象还是数组