angular - 当应用于 Angular 中的嵌套网格时,Mat-Table 数据源被覆盖

标签 angular angular-material mat-table

我在 Angular 中创建了一个 2 级嵌套 Mat-Table 网格,它可以一次扩展多行。在父网格的每一行上单击,它都会调用 API 并加载内部网格的数据。

当我单击第一行时,它会按预期获取数据。

First row data

但是当我单击第二行时,它会按预期获取第二行的数据,但第一个内行的值也变得与第二行相同。第一行的数据源值被第二行覆盖。

Data of mat-table

我尝试使用 indexdataSource 制作为 dataSource[i] 数组,但我无法做到。

我有a working StackBlitz for my issue .

有人可以帮我解决这个问题吗?提前致谢。

最佳答案

问题是每次您进行 api 调用以获取该行的新数据时,内部 userDatasource 都会被覆盖。

这是解决方案之一: 每当您调用获取内部数据源数据时,请将数据分配给元素

getProjectDetails(element: any) {
    //console.log(element);
    this.tableService.getInnerData(element.Id).subscribe(res => {
      if (res.length == 0) {
        element['innerDatasource'] = new MatTableDataSource();
      } else {
        console.log(res);
        element['innerDatasource'] = new MatTableDataSource(res);
      }
    });
  }

然后在 html 中使用该值

<table mat-table [dataSource]="element.innerDatasource" multiTemplateDataRows matSort>

工作 stackblitz 链接:https://stackblitz.com/edit/angular-nested-mat-table-triplenested-bpvhfr?file=app%2Ftable-expandable-rows-example.html

关于angular - 当应用于 Angular 中的嵌套网格时,Mat-Table 数据源被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68160846/

相关文章:

javascript - Angular 2 RC5 编写基于模板的表单的方式是什么?

特定项目的 Angular 页面过渡动画

angular - 更新 tsconfig.json 和 package.json 后的错误

angular - 在 Angular 2+ 中绑定(bind) translateX() 变换

Angular Material 保存并将 pageSize 恢复到 localStorage

angular - 同一数据源的 2 个 mat-paginator

javascript - 在 Angular 垫表中根据 rowIndex 和 columnIndex 插入数据

css - 如何更改垫表中一行的高度

angular - 如何在 typescript 类中将 mat-lines-button 更改为 mat-button ?

Angular Material 7 Multi Select - 设置选定值