Back to skills
SKILL.md
Angular
ASecurityBuild reliable Angular apps avoiding RxJS leaks, change detection traps, and DI pitfalls.
- 17 stars
- 0 votes
- 0 copies
- 10 views
- Added May 29, 2026
Works with
Security analysis
100/100Pro scans all 8 files and shows the line behind each finding
npx -y skills add clawic/skills --skill angular --agent claude-codeAre you the author of Angular?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/clawic-angular)---
name: Angular
slug: angular
version: 1.0.1
description: Build reliable Angular apps avoiding RxJS leaks, change detection traps, and DI pitfalls.
---
## When to Use
User needs Angular expertise — component architecture, RxJS patterns, change detection, dependency injection, routing, and forms.
## Quick Reference
| Topic | File |
|-------|------|
| Components & change detection | `components.md` |
| RxJS & subscriptions | `rxjs.md` |
| Forms & validation | `forms.md` |
| Dependency injection | `di.md` |
| Routing & guards | `routing.md` |
| HTTP & interceptors | `http.md` |
## Common Mistakes
- `OnPush` with mutated objects won't trigger change detection — always create new reference: `{...obj}` or `[...arr]`
- `@ViewChild` is undefined in constructor/`ngOnInit` — access in `ngAfterViewInit` or later
- `*ngFor` without `trackBy` re-renders entire list on any change — add `trackBy` returning stable ID
- Manual `subscribe()` without unsubscribe leaks memory — use `async` pipe, `takeUntilDestroyed()`, or unsubscribe in `ngOnDestroy`
- `HttpClient` returns cold Observable — each `subscribe()` fires new HTTP request
- `setTimeout`/`setInterval` outside NgZone — change detection won't run, use `NgZone.run()` or signals
- Circular DI dependency crashes app — use `forwardRef()` or restructure services
- `ElementRef.nativeElement` direct DOM access breaks SSR — use `Renderer2` or `@defer`
- Route params via `snapshot` miss navigation changes — use `paramMap` Observable for same-component navigation
- `setValue()` on FormGroup requires ALL fields — use `patchValue()` for partial updates
Files in this skill
- SKILL.md
- _meta.json
- components.md
- di.md
- forms.md
- http.md
- routing.md
- rxjs.md
Attribution
Comments
Loading comments…