Компоненты PrimeNG
Table
Dynamic

Dynamic

<p-table [columns]="cols" [value]="productsDynamic" responsiveLayout="scroll">
  <ng-template pTemplate="header" let-columns>
    <tr>
      <th *ngFor="let col of columns">
        { { col.header } }
      </th>
    </tr>
  </ng-template>
  <ng-template pTemplate="body" let-rowData let-columns="columns">
    <tr>
      <td *ngFor="let col of columns">
        { { rowData[col.field] } }
      </td>
    </tr>
  </ng-template>
</p-table>