Итак, вот проблема:
У меня есть циновка с 87 столбцами. Отображаемые данные могут иметь несколько состояний, в зависимости от состояния, данные будут отображаться на разных подэкранах, но все они находятся в одном и том же компоненте, проблема в том, что каждый поднабор данных использует одну и ту же спецификацию таблицы. Таким образом, я получаю шаблон, который дублирует все 87 полей 3 раза (по 1 на статус), а сонар ненавидит это
Я не могу найти способ сделать что-то вроде этого:
<table mat-table [dataSource]="dataSourceStatus1" class="head-table">
<app-my-comp [dataSource]="dataSourceStatus1"></app-my-comp>
<tr mat-header-row *matHeaderRowDef="columnId"></tr>
<tr mat-row *matRowDef="let row; columns: columnId" class="row-tables"></tr>
</table>
Где app-my-comp такой компонент, как:
@Component({
selector: 'app-my-comp',
templateUrl: './my.html',
styleUrls: ['./style-my-style.component.scss'],
})
export class MyComponent {
@Input() dataSource: Status1Data[];
}
И HTML - это вышеупомянутые 87 полей:
<ng-container matColumnDef="field1">
<th mat-header-cell *matHeaderCellDef>field 1</th>
<td mat-cell *matCellDef="let let1">
{{ myObject.someList.field1 }}
</td>
</ng-container>
<ng-container matColumnDef="field2">
...
Я получаю следующую ошибку:
Could not find column with id "field1"
Stackblitz:
https://stackblitz.com/edit/angular-ftmcr4?file=app%2Ftable-basic-example.ts