Tabla de datos de material angular con filas dinámicas

Estoy usando la tabla de datos Angular 5 y Angular Material para la construcción de los datos. Me refiero a un ejemplo en el siguiente sitio. En esta consideración, necesito incluir los datos dinámicos en cada fila como en la captura de pantalla donde 'favorito' es el encabezado de columna.

http://www.devglan.com/angular/angular-data-table-example

Muestra de Json para referencia cruzada.

constELEMENT_DATA: Element[
  
]=[
  {
    position: 1,
    firstName: 'John',
    lastName: 'Doe',
    email: '[email protected]'favoriteColor: 'red',
    favorite: {
      favoriteFood: [
        'Idly',
        'Vada'
      ],
      favoriteCar: 'Mercendes Benz',
      favoriteMovie: 'JamesBond movie',
      favoritePlace: 'HillStation'
    }
  },
  {
    position: 1,
    firstName: 'Mike',
    lastName: 'Hussey',
    email: '[email protected]',
    favorite: {
      favoriteFood: 'Dosa',
      favoriteMovie: 'RajiniKandth movie'
    }
  },
  {
    position: 1,
    firstName: 'Ricky',
    lastName: 'Hans',
    email: '[email protected]',
    favorite: {
      favoriteFood: 'Chappathi',
      favoriteCar: 'BMW'
    }
  },
  {
    position: 1,
    firstName: 'Martin',
    lastName: 'Kos',
    email: '[email protected]'favorite: {
      
    }
  },
  {
    position: 1,
    firstName: 'Tom',
    lastName: 'Paisa',
    email: '[email protected]',
    favorite: {
      favoriteCar: 'Ford'
    }
  }
];

HTML:

<mat-table #table [dataSource]="dataSource">

    <ng-container matColumnDef="position">
      <mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
      <mat-cell *matCellDef="let element">  </mat-cell>
    </ng-container>

    <ng-container matColumnDef="firstName">
      <mat-header-cell *matHeaderCellDef> First Name </mat-header-cell>
      <mat-cell *matCellDef="let element">  </mat-cell>
    </ng-container>

    <ng-container matColumnDef="lastName">
      <mat-header-cell *matHeaderCellDef> Last Name </mat-header-cell>
      <mat-cell *matCellDef="let element">  <mat-cell>
    </ng-container>

    <ng-container matColumnDef="email">
      <mat-header-cell *matHeaderCellDef> Email </mat-header-cell>
      <mat-cell *matCellDef="let element">  </mat-cell>
    </ng-container>

    <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
    <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
  </mat-table>

Mi error no pude capturar la salida correctamente en la captura de pantalla. Si considera el nombre de John como primera fila, Food: ociosamente, Vada aparecerá en esa fila, pero la siguiente fila tendrá Car: Mercendes Benz, la siguiente fila tendrá la película JamesBond y la siguiente fila: HillStation. donde como todas las demás columnas que pertenecen a estas filas estarán en blanco. La próxima iteración comenzará con el nombre Ricky de manera similar. En el Json considera que todos estos artículos favoritos están debajo de favoritos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta