Angular, revised properly
Components, directives, lifecycle, DI, forms, routing, HTTP, RxJS, performance and the senior questions. 56 questions across 10 modules in 4 categories, plus a cheat sheet and flashcards.
Which Angular this covers
The main answer everywhere is NgModules, constructor injection and
*ngIf — what Angular 9 through 15 looks like, and what most existing
codebases still run. Where Angular has since changed, there's one line saying
so, so a question about standalone components or @if can't catch you out.
| You'll answer with | And know that now… |
|---|---|
@NgModule with declarations | Angular 14+: standalone components |
*ngIf / *ngFor | Angular 17+: @if / @for |
constructor(private api: X) | Angular 14+: inject(X) |
| Class guards and interceptors | Angular 15+: plain functions |
Coming from React
Six questions carry a small React comparison, because most of Angular is a different spelling of something you already know:
@Input / @Output | props / callback props |
ngOnInit / ngOnDestroy | useEffect(fn, []) and its cleanup |
*ngFor + trackBy | .map() + key |
| Service + DI | Context or a custom hook |
| Reactive forms | React Hook Form |
Observable + async pipe | a promise that emits many times + TanStack Query |
How to use your time
| If you have… | Do this |
|---|---|
| 1 day | All ten modules in order. |
| 3 hours | Modules 01, 03 (lifecycle), 04 (DI), 08 (RxJS), 09 (performance). |
| 1 hour | The four predict the output boxes, then Module 10. |
| 20 minutes | Cheat sheet and the syntax card. |
The four that catch people
| Question | Where |
|---|---|
| ngOnChanges fires before ngOnInit — and ngOnInit doesn't run again when an input changes | Q15 |
| The route param bug — /orders/1 → /orders/2 reuses the component | Q29 |
| *ngFor without trackBy rebuilds the whole list | Q9 |
| OnPush + a mutated array renders nothing | Q46 |
RxJS and change detection. Everyone can describe a component. Far fewer can
explain why switchMap is right for a search box, or why an OnPush component ignores
a pushed array. Modules 08 and 09.
The sidebar search covers all 56 questions from any page — try "lifecycle", "trackBy", "OnPush", "interceptor", "switchMap", "guard". Results link straight to the answer.