| name | angular-patterns |
| description | Angular 21 development patterns for this project. Use when writing or reviewing Angular components, services, templates, or tests. |
Angular Patterns
Component Design
- Use
input(),output(),viewChild(),contentChild()signal-based functions instead of decorators - Do not add
standalone: true—it's the default in Angular 20+ - Use
ChangeDetectionStrategy.OnPushfor performance - Use Angular control flow syntax (
@if,@for,@switch) instead of*ngIf/*ngFor - Use
hostobject in decorator instead of@HostBinding/@HostListener - Use
class/stylebindings instead ofngClass/ngStyle - Use
providedIn: 'root'for singleton services
State Management
- Use
signal(),computed(), andeffect()for reactive state - Use
update()orset()on signals—nevermutate() - Use
toSignal()when interoperating with RxJS observables
Templates
- Keep templates simple; move logic to component classes
- No arrow functions in templates (not supported)
- No globals like
new Date()in templates - Use
@forwithtrackfor efficient list rendering
Styling
- Use Tailwind CSS with
@applyfor composite styles - Reference styles:
@reference '../../../styles.css'; - Support dark mode via
.dark:variants
Testing
- Use
TestBedwith standalone component imports - Set inputs via
fixture.componentRef.setInput('name', value) - Mock HTTP requests and dependencies
- Run with
ng test --include path/to/file.spec.ts
Accessibility
- Must pass AXE checks and meet WCAG AA standards
- Ensure proper focus management and ARIA attributes