Мне нужно создать таблицу в html (с меньшим количеством внутреннего кода) из данных, поступающих из API. Данные будут поступать следующим образом (смоделированы для этого вопроса)
{ strTableName: "TestTable", strComment:"Approved",
lstTableHeaders:[
{strFieldName : "Sl No.", strType:"Numeric", lstComments:[]},
{strFieldName : "Description", strType:"string", lstComments:[]},
{strFieldName : "Units", strType:"Numeric", lstComments:[]},
{strFieldName : "Total", strType:"Amount", lstComments:[]},
], TableData:
{
lstRowData:[
{iID: 1, lstCellData:[
{strFieldName:"Sl No.", strValue:"1", strComment:"", strBackgroundColor:"green"},
{strFieldName:"Description", strValue:"Item 1", strComment:"", strBackgroundColor:"red"},
{strFieldName:"Units", strValue:"1", strComment:"", strBackgroundColor:"green"},
{strFieldName:"Total", strValue:"500", strComment:"", strBackgroundColor:"yellow"},
]},
{iID: 2, lstCellData:[
{strFieldName:"Sl No.", strValue:"2", strComment:"", strBackgroundColor:"green"},
{strFieldName:"Description", strValue:"Item 2", strComment:"", strBackgroundColor:"red"},
{strFieldName:"Units", strValue:"3", strComment:"", strBackgroundColor:"green"},
{strFieldName:"Total", strValue:"1500", strComment:"", strBackgroundColor:"yellow"},
]},
]
}
}
Цвет фона будет использоваться как цвет ячейки bg, а комментарий будет использоваться для всплывающих данных, когда мышь завис на камеру. Это относится к стилю, но мне нужно создать таблицу из этих данных. возможно ли это?
(Попытка поиска большого количества вопросов из github, stackoverflow и даже просмотра документов из angular. Задание этого вопроса в качестве окончательного варианта.)
Редактировать: приведите приведенный ниже код в html чтобы появились заголовки. все еще изо всех сил пытается получить данные в таблице.
<mat-table #table>
<ng-container *ngFor="let column of item.lstTableHeaders" [matColumnDef]="column.strFieldName">
<mat-header-cell *matHeaderCellDef>{{ column.strFieldName }}</mat-header-cell>
<mat-cell *matCellDef="let column">{{ column.strFieldName }}</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="item.displayedTableHeaders()"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedTableHeaders();"></mat-row>
</mat-table>
и в файле ts: я добавил еще одну функцию для модели таблицы:
public displayedTableHeaders() : string[]{
return this.lstTableHeaders.map(x=> x.strFieldName);
}
любая помощь будет оценена.