【发布时间】:2021-08-22 22:21:15
【问题描述】:
在一个角度模板中,我正在尝试创建一个表格,并在特定列中,根据数据,我想显示一个垫子图标或简单地写“N/A”
我有 3 个选项 -
- 如果不适用,则显示“N/A”
- 如果考试有效,请显示
<mat-icon> - 如果考试无效则显示
<mat-icon>
我刚才在我的代码中引入了“N/A”位。早些时候,我只有两个 <mat-icon> 选项,我的代码运行良好。
现在,当我尝试打开我的 HTML 时,它永远不会显示考试 D 和考试 E 的 <mat-icon>。该列是空白的。
它只显示其他 3 项考试的“N/A”。
谁能帮助我,让我知道我错过了什么或我做错了什么。
我有如下所示的 JSON 数据。
[
{"valid":"Not Applicable","validityDate":"","name":"Exam A"},
{"valid":"Not Applicable","validityDate":"","name":"Exam B"},
{"valid":"Not Applicable","validityDate":"","name":"Exam C"},
{"valid":"Yes","validityDate":"23-01-2022","name":"Exam D"},
{"valid":"No","validityDate":"23-01-2017","name":"Exam E"}
]
我正在尝试在表格中显示它。我的角度模板如下 -
我的 component.ts,我在其中读取 JSON 响应并将其添加到对象中,有这样的东西 -
const EXAM_DATA: Array<TrainingElement> = [
{ title: this.userExamJson[0].name, status: this.userExamJson[0].valid, date: this.userExamJson[0].validityDate },
{ title: this.userExamJson[1].name, status: this.userExamJson[1].valid, date: this.userExamJson[1].validityDate },
{ title: this.userExamJson[2].name, status: this.userExamJson[2].valid, date: this.userExamJson[2].validityDate },
{ title: this.userExamJson[3].name, status: this.userExamJson[3].valid, date: this.userExamJson[3].validityDate },
{ title: this.userExamJson[4].name, status: this.userExamJson[4].valid, date: this.userExamJson[4].validityDate },
];
this.dataSource = EXAM_DATA;
我的 HTML 模板如下所示 -
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<!--- Note that these columns can be defined in any order.
The actual rendered columns are set as a property on the row definition" -->
<ng-container matColumnDef="title">
<th mat-header-cell *matHeaderCellDef> Exam Title </th>
<td mat-cell *matCellDef="let element"> {{element.title}} </td>
</ng-container>
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef> Status </th>
<td mat-cell *matCellDef="let element">
<mat-icon *ngIf="element.status == 'Yes'" [ngStyle]="{'color':'green'}" matTooltipPosition="right"
matTooltipClass="mattooltip" matTooltip={{element.date}}>done_outline</mat-icon>
<mat-icon *ngIf="element.status == 'No'" [ngStyle]="{'color':'orange'}" matTooltipPosition="right"
matTooltipClass="mattooltip" matTooltip={{element.date}}>report_problem</mat-icon>
<mat-content *ngIf="element.status == 'Not Applicable'">N/A</mat-content>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="showColumns"></tr>
<tr mat-row *matRowDef="let row; columns: showColumns;"></tr>
</table>
【问题讨论】:
-
角材质中没有
mat-content,可能你指的是mat-card-content。请同时检查控制台中的错误? -
您好,是的。我指的是 mat-card-content 或任何文本。遗憾的是,控制台中没有错误。我已经检查过了。
-
您的代码看起来不错,能否请您创建一个可重现的堆栈闪电战。
-
嗨萨米尔,感谢您的回复。 jsngian 的答案对我有用。
标签: angular angular-material angular9 angular-template mat-icon