Я использую API, который может возвращать разные JSON, каждый из которых означает свою таблицу.
Это общий HTML-код в моем compenent.html
<table mat-table [dataSource] = "cols" class="mat-elevation-z8">
<ng-container *ngFor="let col of cols" [matColumnDef]="col">
<th mat-header-cell *matHeaderCellDef> {{ col }} </th>
<td mat-cell *matCellDef="let element"> {{ element[col] }} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
Данные, которые я 'я получаю в своем классе компонентов
getData(){
this.requestService.getTableData().subscribe(
data => {
this.arrData = data as string [];
console.log(this.arrData['requestType']);
},
error => {
console.log (error.message);
}
)
this.cols = JSON.parse(this.arrData['responsePayload']);
}
данные JSON, которые я наконец получаю, выглядит следующим образом
[
{
"Company": "Alfreds Futterkiste",
"Contact": "Maria Anders",
"Country": "Germany"
},
....
]
this.cols - мой источник данных для таблицы mat, и этозаполнение правильно в виде массива с 6 записями. Мне нужно сделать из этого таблицу соответствия, но я продолжаю получать эту ошибку
requestHandler.html: 6 ОШИБКА TypeError: name.replace не является функцией в имени MatColumnDef.set [как имя] (table.js: 175) на updateProp (core.js: 32188)
на
<ng-container *ngFor="let col of cols" [matColumnDef]="col">
Может ли кто-нибудь указать мне правильное направление / сказать мне, где я 'не так ли?
Кроме того, если что-то не понятно в вопросе, пожалуйста, дайте мне знать, я попробую объяснить еще раз.
Примечание: я считаю, что есть решение в создании интерфейсадля данных JSON, которые я получаю, но в итоге я сделаю слегка статичный HTML для каждого типа таблицы. Я хочу, чтобы это было общим. Что-то вроде динамического интерфейса (который, я думаю, сделать нельзя). Это , хотя и круто, но я должен уметь это делать во время выполнения.