Home

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.

0 of 10 modules done

Which Angular this covers

Classic first, modern flagged

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 withAnd know that now…
@NgModule with declarationsAngular 14+: standalone components
*ngIf / *ngForAngular 17+: @if / @for
constructor(private api: X)Angular 14+: inject(X)
Class guards and interceptorsAngular 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 / @Outputprops / callback props
ngOnInit / ngOnDestroyuseEffect(fn, []) and its cleanup
*ngFor + trackBy.map() + key
Service + DIContext or a custom hook
Reactive formsReact Hook Form
Observable + async pipea promise that emits many times + TanStack Query

How to use your time

If you have…Do this
1 dayAll ten modules in order.
3 hoursModules 01, 03 (lifecycle), 04 (DI), 08 (RxJS), 09 (performance).
1 hourThe four predict the output boxes, then Module 10.
20 minutesCheat sheet and the syntax card.

The four that catch people

QuestionWhere
ngOnChanges fires before ngOnInit — and ngOnInit doesn't run again when an input changesQ15
The route param bug — /orders/1 → /orders/2 reuses the componentQ29
*ngFor without trackBy rebuilds the whole listQ9
OnPush + a mutated array renders nothingQ46
The one topic to be strongest on

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.

Search

The sidebar search covers all 56 questions from any page — try "lifecycle", "trackBy", "OnPush", "interceptor", "switchMap", "guard". Results link straight to the answer.