I'm creating mat-table which contain row with nested type data.
Value is constructed as an array of string objects. The goal is to assign each of these objects to separate columns.
Objects construction:
weeks: [{week: '1'},{week: '0'},{week: '3'},{week: '4'},{week: '5'}]
Creating columns and assigning data:
<ng-container matColumnDef="{{wk}}" *ngFor="let wk of weekHeaders; index as idx">
<mat-header-cell *matHeaderCellDef>
<div fxLayout="column">
<div class="mt-05">{{wk.header}}</div>
<div *ngIf="wk.weekNo" >{{wk.startDate | date: 'dd-MM-yyyy'}}</div>
<div *ngIf="wk.weekNo">{{wk.endDate | date: 'dd-MM-yyyy'}}</div>
</div>
</mat-header-cell>
<mat-cell *matCellDef="let row;"> {{row.weeks[idx].week}} </mat-cell>
</ng-container>
I was expected something like that:
week1 - assigned value = 1
week2 - assigned value = 0
week3 - assigned value = 3
...
But I'm getting the following error:
Duplicate column definition name provided: "[object Object]".
EDIT:
Interface:
export interface DataTable {
type: string;
process: string;
weeks: {week:String}[];
finalWeek: number;
}
Column setting:
<mat-header-row *matHeaderRowDef="detailedColumns" class="plan-header-row"></mat-header-row>
<mat-row *matRowDef="let row; columns: detailedColumns;">
</mat-row>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>-not in code- as an array of objects, and this must be an array of strings. Sure you can use some similar todisplayedColumns=this.yourArray.map(x=>x.your_property_related_column_name), but it's imposible know it without more data - Eliseo