Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

mat-table array dentro de array

bom dia!

estou fazendo um projeto que preciso usar o mat-table data source e ele está funcionando para todas as informações que estão dentro do meu array, porém preciso puxar um elemento que está dentro de um array filho:

Esses são meus modelos:

export interface changeChipHistory {
  merchantId: number;
  merchantFullName: string;
  merchantDisplayName: string;
  merchantDocument: string;
  projectDescription: string;
  partnerFullName: string;
  active: boolean;
  charges: chargesChipHistory[];
}

export interface chargesChipHistory {
  chipChargeId: number;
  pdv: number;
  pdvDisplay: string;
  chargeStartDate: Date;
  chargeAmount: number;
  chipChargeStatusId: number;
  chipChargeStatusDescription: string;
}

esta é minha tabela:

<table mat-table [dataSource]="dataSource" class="table-result">
  <ng-container matColumnDef="merchantId">
    <th mat-header-cell *matHeaderCellDef>PDV</th>
    <td mat-cell *matCellDef="let element">{{ element.merchantId }}</td>
  </ng-container>

  <ng-container matColumnDef="merchantDocument">
    <th mat-header-cell *matHeaderCellDef>Código Identificador</th>
    <td mat-cell *matCellDef="let element">{{ element.merchantDocument }}</td>
  </ng-container>
  <ng-container matColumnDef="chipChargeStatusDescription">
    <th mat-header-cell *matHeaderCellDef>Cobrança</th>
    <td mat-cell *matCellDef="let element">
      {{ element.charges.chipChargeStatusDescription }}
    </td>
  </ng-container>
  <ng-container matColumnDef="chipChargeStatusId">
    <th mat-header-cell *matHeaderCellDef>chip charge</th>
    <td mat-cell *matCellDef="let element">
      {{ element.charges.chipChargeStatusId }}
    </td>
  </ng-container>
  <ng-container matColumnDef="pdvDisplay">
    <th mat-header-cell *matHeaderCellDef>pdv display</th>
    <td mat-cell *matCellDef="let element">
      {{ element.charges.pdvDisplay }}
    </td>
  </ng-container>
  <tr mat-header-row *matHeaderRowDef="displayColumns"></tr>
  <tr mat-row *matRowDef="let row; columns: displayColumns"></tr>
</table>

No caso, os elements {{ element.charges.qualquercoisa }} não funciona...

alguém pode me ajudar?

5 respostas

Oi Simone,

O charges é um array de chargesChipHistory, no caso não teria que colocar element.charges[0 ou indice].qualquercoisa ?

vou tentar, obrigada pela sugestão!

Gustavo,

desculpa eu li sua resposta e pensei numa solução mas na realidade, o proprio "element" da mat-table já faz um loop

 <td mat-cell *matCellDef="let element">

o meu problema ta sendo o element.item.itemDentroDoItem

Oi Simone, acho que no caso você pode precisar de um for dentro desse item, um loop dentro do loop.

solução!

Oi Gustavo

na realidade o back-end estava errado e eu tive que refazer o array pois a mat-table não aceita array dentro de array u_u" mas então conversei com o back aqui e ele vai mudar o retorno pra mim, obrigada!