Getting Started

Installation

npm install @theryansmee/ngx-virtual-grid
yarn add @theryansmee/ngx-virtual-grid
pnpm add @theryansmee/ngx-virtual-grid

Angular Version Support

Each Angular major version is maintained on its own branch with a matching npm tag.

AngularLibrarynpm tag
22.x22.x.xlatest
21.x21.x.xangular21
20.x20.x.xangular20
19.x19.x.xangular19
18.x18.x.xangular18
17.x17.x.xangular17
16.x16.x.xangular16
15.x15.x.xangular15
14.x14.x.xangular14

To install a specific Angular version:

npm install @theryansmee/ngx-virtual-grid@angular21

Basic Usage

Import the component and directive directly (standalone, no NgModule required):

import { Component } from '@angular/core';
import { NgxVirtualGridComponent, VirtualGridItemDirective } from '@theryansmee/ngx-virtual-grid';

@Component({
  selector: 'app-example',
  imports: [NgxVirtualGridComponent, VirtualGridItemDirective],
  template: `
    <ngx-virtual-grid
      [items]="items"
      [bufferSize]="3"
      [loadMoreThreshold]="0.8"
      (loadMore)="onLoadMore()">

      <ng-template ngxVirtualGridItem let-item let-index="index">
        <div class="card">{{ item.name }}</div>
      </ng-template>
    </ngx-virtual-grid>
  `,
  styles: [`
    ngx-virtual-grid {
      grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
      gap: 16px;
    }
  `],
})
export class ExampleComponent {
  items: any[] = [];

  onLoadMore(): void {
    // Fetch and append more items
  }
}

The component works as a CSS Grid container. You control the layout with standard grid-template-columns and gap properties. See the Layouts page for more examples.