Причина, по которой вы видите все значения, заключается в том, что вы отображаете все значения в displayColumns:
<mat-header-cell *cdkHeaderCellDef>{{displayedColumns}}</mat-header-cell>
В вашем ng-контейнере вы просматриваете данные с помощью ngFor:
<ng-container *ngFor="let column of displayedColumns" [cdkColumnDef]="column">
Таким образом, вам нужно изменить ячейку mat-header, чтобы взять каждый отдельный элемент, в данном случае 'column'. Ваша ячейка mat-header должна выглядеть следующим образом:
<mat-header-cell *cdkHeaderCellDef>{{column}}</mat-header-cell>
Теперь мы перебираем каждый отдельный элемент, вместо того чтобы каждый раз отображать весь массив.