Я использую асинхронную трубу в турбо-таблице, чтобы показать документы из коллекции пожарного магазина.
Одно из полей в документе называется providerName
, и вместо сохранения фактического имени провайдера я сохраняю идентификатор firebase провайдера (вложенный объект).Таким образом, всякий раз, когда реальный объект провайдера изменяется (операция редактирования), у меня будет правильное имя в моем исходном документе
В настоящее время моя p-таблица primeng показывает идентификатор провайдера, поэтому я написал следующий код для управления им
Вот код 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