【发布时间】:2018-07-12 14:17:55
【问题描述】:
我正在尝试在我的 Angular 6 + Material 项目中到处使用骨架占位符。我被<table> 卡住了,因为我不知道如何在尚未加载数据时使用占位符(下图示例):
我在用什么
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="date">
<th mat-header-cell *matHeaderCellDef>Date</th>
<td mat-cell *matCellDef="let v">{{ v.date }}</td>
</ng-container>
<ng-container matColumnDef="description">
<th mat-header-cell *matHeaderCellDef>Description</th>
<td mat-cell *matCellDef="let v">{{ v.description }}</td>
</ng-container>
<ng-container matColumnDef="amount">
<th mat-header-cell *matHeaderCellDef class="text-right">Amount</th>
<td mat-cell *matCellDef="let v" class="text-right">{{ v.amount }}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
我的骨架占位符可能是
<tr *ngFor="let s of [1, 2, 3]">
<td><span class="sk skw-2 skh-3"></span></td>
<td><span class="sk skw-3 skh-3"></span></td>
<td><span class="sk skw-2 skh-3"></span></td>
</tr>
如果 dataSource 为空,则应插入。任何想法如何做到这一点?
一个(非常丑陋)的解决方案是这样的:
<table mat-table [dataSource]="dataSource || [{}, {}, {}]">
和列
<ng-container matColumnDef="date">
<th mat-header-cell *matHeaderCellDef>Date</th>
<td mat-cell *matCellDef="let v">
<ng-container *ngIf="v.date">
{{ v.date }}
</ng-container>
<span *ngIf="!v.date" class="sk skw-2 skh-3"></span>
</td>
</ng-container>
【问题讨论】:
-
您可以尝试使用 *ngIf else 来检查数据是否存在
标签: angular html-table angular-material2