What problem does it solve?
Rendering thousands of rows or columns in an Angular Table causes severe DOM bloat and slow rendering. This Skill guides the integration of @tanstack/angular-virtual with @tanstack/angular-table so only visible rows and columns are rendered, while respecting Angular's injection context and signal-based reactivity.
Core Features & Use Cases
- Row and Column Virtualization: Wire
injectVirtualizer to the table's final row model using computed signals, scroll elements, item keys, and size estimation.
- Correct DOM Geometry: Apply total-size spacers, absolute positioning, transforms, sticky headers, and grid/flex sizing that the virtualizer itself does not handle.
- Infinite Scrolling: Gate server fetches when the last virtual item approaches the fetched data length, with safeguards against duplicate requests.
- Use Case: Build an Angular datagrid displaying 100,000 server-side rows where only ~30 visible rows are rendered at a time, with infinite scroll fetching additional pages as the user scrolls.
Quick Start
Add virtualized rows to my Angular table using injectVirtualizer connected to the table's row model with a scroll container and total-size spacer.