angular-primeng-table-patterns

Implements PrimeNG table patterns with lazy loading and pagination for ASP.NET Zero Angular apps.

Updated May 22, 2026
One-click install
npx skills add https://github.com/shakesoft/timekeeper --skill angular-primeng-table-patterns-shakesoft
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: angular-primeng-table-patterns
Source: https://github.com/shakesoft/timekeeper/tree/main/.cursor/skills/angular-primeng-table-patterns
Command: npx skills add https://github.com/shakesoft/timekeeper --skill angular-primeng-table-patterns-shakesoft

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Developers building ASP.NET Zero Angular frontends often misconfigure PrimeNG tables, causing double data loads, broken pagination offsets, and incorrect signal bindings. This Skill provides the exact component and template patterns for simple and paginated PrimeNG tables that work correctly with the PrimengTableHelper. ## Core Features & Use Cases - Simple Table Pattern: Implements non-paginated tables for small datasets using lazy loading and the PrimengTableHelper loading indicator. - Paginated Table Pattern: Implements server-side paging with p-paginator, correct skip/maxResultCount computation from lazy-load events, and DTO-based service inputs. - Action Menu Pattern: Builds permission-checked TieredMenu action menus with signal-based menu items. - Use Case: When creating a new admin page listing products with search, sorting, and server-side pagination, apply this Skill to generate the component and template without the common ngOnInit double-load bug or incorrect ngModel signal binding. ## Quick Start Ask the AI to create a paginated PrimeNG table for an entity in the ASP.NET Zero Angular project following the angular-primeng-table-patterns skill.

Frequently Asked Questions about angular-primeng-table-patterns

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I implement server-side pagination with PrimeNG table in Angular?▼

Bind (onLazyLoad) to your data-fetching method and pass the event to primengTableHelper.getMaxResultCount and getSkipCount to compute page size and offset. Add a p-paginator with totalRecords bound to primengTableHelper.totalRecordsCount and call the same method on onPageChange.

Why does my PrimeNG table load data twice on page init?▼

The double load happens when you call getRecords() in ngOnInit while (onLazyLoad) is also bound, because the table triggers onLazyLoad automatically on initialization. Remove the ngOnInit call and let the lazy load event fetch the data.

How do I bind a signal to an input with ngModel in Angular?▼

Use [ngModel]="filterText()" together with (ngModelChange)="filterText.set($event)" to read and update the signal value. Do not use [(ngModel)]="filterText", which binds to the signal function reference instead of its value.

Should I pass individual parameters or a DTO to NSwag-generated list services?▼

Always pass a single typed DTO input object such as new GetProductsInput({...}). NSwag generates HttpPost list methods that expect a typed DTO body, not individual query-string parameters.

When should I use a simple table versus a paginated PrimeNG table?▼

Use the simple table pattern for small datasets where all records fit on one page, setting totalRecordsCount from the result items length. Use the paginated pattern with p-paginator and server-side skip/maxResultCount for large datasets.