Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将动态列和数据绑定到angular 7中的mat表_Angular_Angular Material - Fatal编程技术网

将动态列和数据绑定到angular 7中的mat表

将动态列和数据绑定到angular 7中的mat表,angular,angular-material,Angular,Angular Material,Am通过动态准备列将数据绑定到角度材质表 please find below code component.ts export class DepComponent { tableSource :any= [ { "name":"ssit", "departments":[{"depName":"cse","noOfStudents":30},

Am通过动态准备列将数据绑定到角度材质表

please find below code 

component.ts

export class DepComponent {
    tableSource :any= [
              {
                "name":"ssit",
                "departments":[{"depName":"cse","noOfStudents":30},
                                {"depName":"civil","noOfStudents":60}]
              },
                   {
                "name":"vbit",
                "departments":[{"depName":"cse","noOfStudents":90},
                                {"depName":"civil","noOfStudents":40}]
              }
        ];

    displayedColumns: string[] = [];
   constructor() {
        this.displayedColumns= this.tableSource[0].departments.map(x=>x.depName)
    }
}


  <table mat-table [dataSource]="tableSource" class="mat-elevation-z8">
        <ng-container matColumnDef="{{column}}" *ngFor="let column of displayedColumns">
            <th mat-header-cell *matHeaderCellDef>
                {{column}}
            </th>
            <td mat-cell *matCellDef="let element">
                <span *ngFor="let s of element.departments">
                    {{s.noOfStudents}}
                </span>
            </td>
        </ng-container>

        <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
        <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
    </table>
我想输出如下

Cse Civil
30  60
90  40

要首先获得所需的结果,您需要将数据转换为所需的格式,如

dataSource=this.tableSource.map(i=> {
      var result = {};
         i.departments.forEach(d=>{
        result[d['depName']]=d.noOfStudents
        })
       return result;
      })
然后将html更改为

 <table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
         <ng-container matColumnDef="cse">
                <th mat-header-cell *matHeaderCellDef> Cse </th>
                <td mat-cell *matCellDef="let element"> {{element.cse}} </td>
          </ng-container>
          <ng-container matColumnDef="civil">
                <th mat-header-cell *matHeaderCellDef> Civil </th>
                <td mat-cell *matCellDef="let element"> {{element.civil}} </td>
          </ng-container>
        <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
        <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
    </table>

Cse
{{element.cse}
公民的
{{element.civil}}

要首先获得所需的结果,您需要将数据转换为所需的格式,如

dataSource=this.tableSource.map(i=> {
      var result = {};
         i.departments.forEach(d=>{
        result[d['depName']]=d.noOfStudents
        })
       return result;
      })
然后将html更改为

 <table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
         <ng-container matColumnDef="cse">
                <th mat-header-cell *matHeaderCellDef> Cse </th>
                <td mat-cell *matCellDef="let element"> {{element.cse}} </td>
          </ng-container>
          <ng-container matColumnDef="civil">
                <th mat-header-cell *matHeaderCellDef> Civil </th>
                <td mat-cell *matCellDef="let element"> {{element.civil}} </td>
          </ng-container>
        <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
        <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
    </table>

Cse
{{element.cse}
公民的
{{element.civil}}

你能提供stackblitz吗?我可以在那里复制一个问题!您必须将行和列作为单独的阵列进行管理。您可以提供stackblitz,我可以在其中重现问题!您必须将行和列作为单独的数组来管理。当我从数据库中获取结果时,返回为{“30”:“30”,“60”:“60”}的值是retunning,而不是key@madhuGoud检查您的api响应是否与示例jsoncorrect@jitender相同我的api中的无效响应,有一件事是可以将object推到这里result[d['depName']={d.noOfStudents,d.nooftechers}@madhuGoud,我不这么认为,因为它需要字符串,并且您正在尝试将objectit用于我提供的示例JSON,当我从数据库结果中获取返回为{30:“30”,“60:“60”}值是重新展开的,而不是key@madhuGoud检查您的api响应,如果这与示例jsoncorrect@jitender来自我的api的无效响应相同,那么有一件事是可以将对象推送到这里结果[d['depName']={d.noOfStudents,d.nooftechers}@madhuGoud,我不这样认为,因为它需要是字符串,并且您正在尝试分配对象