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
OnPushwith mutated objects won't trigger change detection — always create new reference:{...obj}or[...arr]@ViewChildis undefined in constructor/ngOnInit— access inngAfterViewInitor later*ngForwithouttrackByre-renders entire list on any change — addtrackByreturning stable ID- Manual
subscribe()without unsubscribe leaks memory — useasyncpipe,takeUntilDestroyed(), or unsubscribe inngOnDestroy HttpClientreturns cold Observable — eachsubscribe()fires new HTTP requestsetTimeout/setIntervaloutside NgZone — change detection won't run, useNgZone.run()or signals- Circular DI dependency crashes app — use
forwardRef()or restructure services ElementRef.nativeElementdirect DOM access breaks SSR — useRenderer2or@defer- Route params via
snapshotmiss navigation changes — useparamMapObservable for same-component navigation setValue()on FormGroup requires ALL fields — usepatchValue()for partial updates