Компоненты PrimeNG
TreeTable
Filter

Filter

col.header rowData[col.field] No data found.

<p-treeTable #tt [value]="filesFilter" [columns]="cols">
  <ng-template pTemplate="caption">
    <div style="text-align: right">
      <i class="pi pi-search"></i>
      <input type="text" pInputText placeholder="Global Filter" (input)="tt.filterGlobal($event.target.value, 'contains')" style="width:auto">
    </div>
  </ng-template>
  <ng-template pTemplate="header" let-columns>
    <tr>
      <th *ngFor="let col of cols">
        { { col.header } }
      </th>
    </tr>
    <tr>
      <th *ngFor="let col of cols">
        <input pInputText type="text" (input)="tt.filter($event.target.value, col.field, col.filterMatchMode)">
      </th>
    </tr>
  </ng-template>
  <ng-template pTemplate="body" let-rowNode let-rowData="rowData">
    <tr>
      <td *ngFor="let col of cols; let i = index">
        <p-treeTableToggler [rowNode]="rowNode" *ngIf="i == 0"></p-treeTableToggler>
        { { rowData[col.field] } }
      </td>
    </tr>
  </ng-template>
  <ng-template pTemplate="emptymessage">
    <tr>
      <td [attr.colspan]="cols.length">No data found.</td>
    </tr>
  </ng-template>
</p-treeTable>