You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何通过MatDialog将表格行数据传递至弹窗组件并展示

解决MatDialog弹窗接收行数据的问题

这事儿很简单,Angular Material的MatDialog专门留了数据传递的口子,咱们分三步搞定:

1. 父组件传递行数据到弹窗

修改你组件TS里的toggle方法,把点击的行数据塞进dialogConfig.data属性里——这是MatDialog用来传递参数的标准方式:

toggle(userRow: any){
  const dialogConfig = new MatDialogConfig();
  dialogConfig.disableClose = false;
  dialogConfig.autoFocus = true;
  dialogConfig.width="60%";
  // 关键:把当前行的user数据传入弹窗
  dialogConfig.data = userRow;
  this.dialog.open(UserDetailsPopupComponent, dialogConfig);
}

2. 弹窗组件接收传递的数据

打开UserDetailsPopupComponent的TS文件,通过MAT_DIALOG_DATA依赖注入获取父组件传来的数据。别忘了先导入需要的模块:

import { Component, Inject } from '@angular/core';
// 必须导入这个常量来获取弹窗数据
import { MAT_DIALOG_DATA } from '@angular/material/dialog';

@Component({
  selector: 'app-user-details-popup',
  templateUrl: './user-details-popup.component.html',
  styleUrls: ['./user-details-popup.component.css']
})
export class UserDetailsPopupComponent {
  // 注入后,data就是父组件传过来的userRow对象
  constructor(@Inject(MAT_DIALOG_DATA) public data: any) { }
}

3. 弹窗HTML展示数据

最后修改弹窗的HTML模板,把原来的u.name改成我们注入的data.name就行了:

<h1>Hello {{data.name}}</h1>

如果以后你的user对象添加了更多字段(比如ID、邮箱),直接用data.id、data.email就能展示,完全适配。

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:17:47