header 用の JSON データを用意し、そのデータを使って複数列ヘッダを定義する方法をご紹介します。

構築する Gird イメージはこちらです。

用意する header 用の JSON データはこちら

public headerData = [
  {
    field: 'data1',
    value: 'データ1',
  },
  {
    field: 'data2',
    value: 'データ2'
  },
  {
    field: 'data3',
    value: 'データ3'
  },
  {
    field: 'data4',
    value: 'データ4',
    children: [
      {
        field: 'data5',
        value: 'データ5',
        children: [
          {
            field: 'data6',
            value: 'データ6',
          },
          {
            field: 'data7',
            value: 'データ7',
          }
        ]
      },
      {
        field: 'data8',
        value: 'データ8',
        children: [
          {
            field: 'data9',
            value: 'データ9',
          },
          {
            field: 'data10',
            value: 'データ10',
          }
        ]
      }
    ]
  }
];

この header 用の JSON データを使って複数列ヘッダを定義するためのコンポーネントはこちら

<igx-grid [data]="data" primaryKey="id">
  <ng-container>
    <ng-container *ngFor="let column of headerData">
      <igx-column *ngIf="!column.children" [header]="column.field" [field]="column.field"></igx-column>
      <igx-column-group *ngIf="column.children" [header]="column.field">
        <ng-container *ngFor="let childColumn of column.children">
          <igx-column *ngIf="!childColumn.children" [header]="childColumn.field" [field]="childColumn.field"></igx-column>
          <igx-column-group *ngIf="childColumn.children" [header]="childColumn.field" >
            <ng-container *ngFor="let grandChildColumn of childColumn.children">
              <igx-column *ngIf="grandChildColumn.field" [header]="grandChildColumn.field" [field]="grandChildColumn.field"></igx-column>
            </ng-container>
          </igx-column-group>
        </ng-container>
      </igx-column-group>
    </ng-container>
  </ng-container>
</igx-grid>

ng-container による *ngFor や、配下の タグ で *ngIf を使うことで header 用の JSON データから複数列ヘッダを構築しています。

製品について

Ignite UI for Angular