IgxGridを複数個置いてスクロールを同期させたい場合は、IgxGridのgridScrollイベントを使ってそれぞれのスクロール位置を同じ値にします。
スクロール位置は、IgxForOfディレクティブで制御できます。IgxForOfディレクティブは縦スクロール用と横スクロール用とそれぞれ別にあり、IgxGridのverticalScrollContainer、headerContainerでアクセスできます。
<!-- テンプレート(app.component.html)側 -->
<!-- 1つ目のグリッド -->
<div class="my_wrapper">
<igx-grid #grid1 [data]="data1" height="300px" width="600px"
[primaryKey]="'ID'" [autoGenerate]="true"
(gridScroll)="onScroll(grid1, $event)">
</igx-grid>
</div>
<!-- 2つ目のグリッド -->
<div class="my_wrapper">
<igx-grid #grid2 [data]="data2" height="300px" width="600px"
[primaryKey]="'ID'" [autoGenerate]="true"
(gridScroll)="onScroll(grid2, $event)">
</igx-grid>
</div>
// ソース(app.component.ts)側
@ViewChildren(IgxGridComponent) grids!: QueryList<IgxGridComponent>;
public onScroll(scrolledGrid: IgxGridComponent, args: IGridScrollEventArgs){
this.grids.forEach(grid => {
if(grid !== scrolledGrid){
const igxForOf = (args.direction === 'vertical' ? grid.verticalScrollContainer : grid.headerContainer);
if(igxForOf.scrollPosition !== args.scrollPosition){
igxForOf.scrollPosition = args.scrollPosition;
}
}
});
}
実行結果

サンプル
※ViewChildでIgxGridを個別に取得する場合は、こちらのサンプルをどうぞ。
APIリファレンス
- gridScroll
- IgxForOfDirective