angular-component-patterns

Implements Angular 21 standalone components with signals, inject(), and AppComponentBase for ASP.NET Zero.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Angular developers working on ASP.NET Zero must follow strict conventions for standalone components, signal-based state, Luxon DateTime handling, and NSwag-generated DTOs, and violating these patterns causes compile errors and inconsistent code. ## Core Features & Use Cases - Standalone Component Patterns: Enforces signal-based state, inject() for DI, viewChild(), and output() instead of legacy decorator APIs. - DateTime Handling: Guides correct use of LuxonFormatPipe, abp-datetime-picker, and DateTimeService instead of Angular's DatePipe on Luxon DateTime fields. - NSwag DTO Compliance: Ensures all required fields in generated input interfaces are passed explicitly to avoid TypeScript errors. - Use Case: When building a new products list page with a create/edit modal, follow the checklist to produce a component that compiles cleanly and matches ASP.NET Zero conventions. ## Quick Start Create a new Angular list component for the products feature following the ASP.NET Zero standalone component conventions.

Frequently Asked Questions about angular-component-patterns

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

FAQPage Schema
How do I create a standalone Angular component in ASP.NET Zero?▼

Define a standalone component with an imports array in @Component, extend AppComponentBase, use inject() for dependency injection, and signal() for state. Add appModuleAnimation() to animations and import LocalizePipe, PermissionPipe, and BusyIfDirective.

How do I replace @ViewChild and @Output with signals in Angular?▼

Use viewChild<Type>('ref') instead of the @ViewChild decorator and output<void>() instead of @Output() with EventEmitter. Read signal values with this.property() and update them with this.property.set(value).

Why does Angular DatePipe fail on ASP.NET Zero date fields?▼

NSwag proxies return Luxon DateTime objects, which Angular's DatePipe does not accept, causing a TS2769 compile error. Use LuxonFormatPipe with preset tokens like 'D' or 'F' for display and abp-datetime-picker for form inputs.

Do I need to import built-in pipes in Angular standalone components?▼

Yes, standalone components require every pipe used in the template to be listed in the imports array, including CurrencyPipe, DatePipe, DecimalPipe, and AsyncPipe from @angular/common. They are not auto-included.

Why does my NSwag input DTO cause a TypeScript error?▼

NSwag may mark non-nullable C# properties as required in the generated TypeScript interface, so omitting them from an object literal fails compilation. Pass all interface fields explicitly, using undefined for optional ones.