El error lo tienes en los data-binding
tabladinamica.component.html
La parte modificada sería esta:
{{element[<b>{{</b>columna<b>}}</b>]}}
quedando el código así:
<mat-table #table [dataSource]="datos" class="mat-elevation-z8"><ng-container [matColumnDef]="columna" *ngFor="let columna of columnas;"><th mat-header-cell *matHeaderCellDef> {{columna}}</th><td mat-cell *matCellDef="let element; let i=dataIndex;"> {{element[{{columna}}]}}</td></ng-container><tr mat-header-row *matHeaderRowDef="columnas"></tr><tr mat-row *matRowDef="let row; columns: columnas;"></tr>
Resumiendo:
Estas haciendo una llamada al elemento element["columna"]
, elemento que no existe.
Al hacer una llamada a element[{{columna}}]
que sería lo mismo que ponerelement["ciudad"]
>element["vehiculos.turismo"]
> etc.