angular - Angular - MatTable 不显示数据
问题描述
我在显示从我的客户端获取的 JSON 对象之一的数据时遇到问题。我只看到标题数据。我不清楚我错过了什么。
我检查了客户端发送的JSON文件,很好。
TS 文件代码:
import { Component, OnInit, Input } from '@angular/core';
import { MatTableDataSource } from '@angular/material/table';
@Component({
selector: 'app-list-student',
templateUrl: './list-student.component.html',
styleUrls: ['./list-student.component.css']
})
export class ListStudentComponent implements OnInit {
studentData: any;
headerColumns: string[] = ["FIRST_NAME", "LAST_NAME", "DOB_DATE"];
dataSource = new MatTableDataSource([]);
summaryTableConfig = [
{
'headerValue' : 'First Name',
'columnValue' : 'FIRST_NAME',
},
{
'headerValue' : 'Last Name',
'columnValue' : 'LAST_NAME',
},
{
'headerValue' : 'DOB',
'columnValue' : 'DOB_DATE',
}
];
constructor() { }
ngOnInit() {
this.studentData = {"header": {"columnsMap": {"DOB_DATE": "12/12/1942","FIRST_NAME": "JOHN","LAST_NAME": "DOE"}}};
this.dataSource = new MatTableDataSource;
this.dataSource.data = this.studentData;
}
}
HTML 代码
<mat-table [dataSource]="dataSource">
<ng-container *ngFor="let data of summaryTableConfig" [matColumnDef]="data.columnValue">
<mat-header-cell *matHeaderCellDef>
<span>{{ data.headerValue }}</span>
</mat-header-cell>
<mat-cell *matCellDef="let element">
<span>{{element["columnsMap"][data.columnValue]}}</span>
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="headerColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: headerColumns;"></mat-row>
</mat-table>
解决方案
如果您检查错误日志,您应该看到“无法读取未定义的属性 'columnsMap'”。
这就是发生的事情。您使用以下命令初始化 studentData:
{"Students":
{"student":
[
{"header":
{"columnsMap":
{"DOB_DATE": "12/12/1942","FIRST_NAME": "JOHN","LAST_NAME": "DOE"}
}
}
]
}
}
然后通过 this.studentData["Students"]["student"]["header"]["columnsMap"] 遍历 studentData,相当于 this.studentData.Students.student.header.columnsMap。
问题是学生是一个数组。因此 this.studentData.Students.student.header 是未定义的,您无法读取未定义的 columnsMap。
要进行测试,您可以编写 this.studentData.Students.student[0].header.columnsMap。这应该会给你一个有 1 行的表。
推荐阅读
- java - 我在将类型化数组中的可绘制资源 ID 添加到自定义 ArrayAdapter 时遇到问题。他们都以“0”的形式出现
- performance - 使用 MPM 事件调整高流量的 Apache 性能
- css - Gulp 以不同的顺序编译 css
- android - 添加 RecyclerView 的问题
- php - 访问 register api whitout jwt token
- vb.net - 如何从 UltraGrid 的过滤行中获取准确的行索引
- javascript - 如何过滤特定列以获得最大值和最小值?
- c# - 如果我之后断开连接,Cumulocity 无法发布消息
- jersey - 是否能够逐部分返回数据
- stocktwits - 检索 access_token 时的验证码响应