В настоящее время я использую пакет внутри проекта Angular, в котором находятся повторно используемые компоненты, которые я разработал для проекта. Как я могу сделать заголовки / строки столбцов в таблице материалов динамическими c, чтобы я мог просто передать их в качестве входного массива, когда я использую таблицу в своем проекте Angular?
Некоторые из этих заголовков сложены или имеют уникальный HTML / CSS, и именно здесь я сталкиваюсь с проблемой. Я попытался создать массив внутри моего компонента, который имеет логический флаг, указывающий, должен ли заголовок / строка столбца содержать два поля, расположенные друг над другом.
Ниже приведен фрагмент моего текущего HTML, который не является динамическим c. Вы можете видеть, что оба ng-контейнера различны. Как я могу написать это таким образом, чтобы, когда я потребляю свою таблицу внутри моего проекта, я мог просто передать массив столбцов / строк в качестве входных данных?
<ng-container matColumnDef="from">
<th mat-header-cell *matHeaderCellDef>
<div [ngStyle] = "{'color': pickupHeader}" class = "stackedColumn">
<span (click)="toggleDates($event)">{{ 'shipperFrom' }}</span>
</div>
<div [ngStyle] = "{'color': deliveryHeader}" class = "stackedColumn">
<span (click) = "toggleDates($event)">{{ 'shipperTo' }}</span>
</div>
</th>
<td mat-cell *matCellDef="let element">
<div>
<span class = "location"> <img src="{{ element.Flag }}">{{element.PickupCity}}</span>
</div>
<div>
<span class = "location"><img src="{{ element.Flag }}">{{element.DeliveryCity}}</span>
</div>
</td>
</ng-container>
<ng-container matColumnDef="legs">
<th mat-header-cell *matHeaderCellDef> {{ somethingElse }} </th>
<td mat-cell *matCellDef="let element"> {{element.SomethingElse}} </td>
</ng-container>
В основном я хочу сделать что-то в моем component.ts, который выглядит следующим образом:
data = [{},{},{},{}]
, и я хочу, чтобы этот массив объектов заполнял таблицу и знал, какой тип HTML он должен использовать, чтобы при импорте и использовании в моем спроецируйте это все, что мне нужно:
<the-table [dataSource] = "data"></the-table>
По сути, я хочу иметь возможность добавлять столбцы / строки в таблицу на лету без необходимости go назад и редактирования пакета.