我的数据源提供以下格式的 json 数据文件。
主题.json
[
{
"subjectCode": "1111",
"subjectTitle": "English Literature",
"subjectGroup": "English",
"status": "Available"
},
{
"subjectCode": "2222",
"subjectTitle": "Algebra III",
"subjectGroup": "Mathematics",
"status": "Not Available"
}
]
这是用于读取数据文件的接口类。
主题模型.ts
export interface Subject {
subjectCode: string;
subjectTitle: string;
subjectGroup: string;
status: string;
}
和组件文件
主题组件.ts
export class SubjectComponent implements OnInit {
searchResults: Subject[];
// lots of other stuff
}
出于 UI 设计的原因,我需要在浏览器中将主题代码和主题标题显示为单列。如果我使用静态列,这很容易完成。
带有静态列的 subject.component.html
<p-table [columns]="cols" [value]="searchResults">
<ng-template pTemplate="header" let-columns>
<tr>
<th>Subject</th>
<th>Group</th>
<th>Status</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowData>
<tr>
<td>{{rowData.subjectCode}} {{rowData.subjectTitle}}</td>
<td>{{rowData.subjectGroup}}</td>
<td>{{rowData.status}}</td>
</tr>
</ng-template>
</p-table>
但是,当我尝试对动态列执行相同操作时,我找不到使用动态列使用的 {{rowData[col.field]}} 参数的方法,而且我找不到任何关于如何做的提及它在 PrimeNG 文档中。
修改了 subject.component.ts 以使用动态列
export class SubjectComponent implements OnInit {
searchResults: Subject[];
// table columns
this.cols = [
{ field: 'subjectCode', header: 'Subject code'},
{ field: 'subjectTitle', header: 'Subject title'},
{ field: 'subjectGroup', header: 'Group'},
{ field: 'status', header: 'Status'}
];
// lots of other stuff
}
使用动态列修改了 subject.component.html
<p-table [columns]="cols" [value]="searchResults">
<ng-template pTemplate="header" let-columns>
<tr>
<th *ngFor="let col of columns">
{{col.header}}
<p-sortIcon [field]="col.field"></p-sortIcon>
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowData let-columns="columns">
<tr>
<td *ngFor="let col of columns">
{{rowData[col.field]}}
</td>
</tr>
</ng-template>
</p-table>
如何使用动态列将界面中的主题代码和标题连接到 p 表中的单个列中?