我在我的 turbo 表中使用异步管道来显示来自 firestore 集合的文档。
文档中的一个字段被调用providerName
,并且没有保存实际的提供者名称,而是保存了提供者 firebase id(嵌套对象)。这样,每当实际提供者对象更改(编辑操作)时,我将在原始文档中拥有正确的名称
目前我的primeng p-table显示提供者ID,所以我编写了以下代码来操作它
这是template.html代码
<p-table #dt [columns]="cols" [value]="expenseService.expenses$ | async" dataKey="id">
<ng-template pTemplate="body" let-expense>
<tr [pSelectableRow]="expense">
<td *ngFor="let col of cols" [ngSwitch]="col.field">
<span *ngSwitchCase="'serviceProviderName'">{{getName(expense)}}</span> <--- this is the important line
<span *ngSwitchCase="'amount'">{{expense.amount | number:'1.0-0'}}</span>
<span *ngSwitchDefault>{{ expense[col.field] }}</span>
</td>
</tr>
</ng-template>
</p-table>
在我的组件中,我有以下 getName() 的实现
getName(event) {
const label = this.serviceProviders.filter(x => x.value === event.serviceProviderName);
if (label && label[0]) {
return label[0].label;
} else {
return event.serviceProviderName;
}
}
当serviceProviders
表格被一个可观察的填充时,它是空的,所以我的问题来了。
如何让数据表知道它serviceProviders
已准备好然后调用该getName
函数?