RTS questionnaire · Q24 · Angular proof

Have you worked with Angular concepts such as lazy-loaded modules, route guards, interceptors, RxJS, state management, reusable components, custom directives/pipes, and reactive forms?

A runnable review of the concepts in day-to-day use, with the code that implements them and the measurement that shows the effect on the delivered application.

Status: reviewed Live Angular workflow Angular 17/18 · RxJS · Signals Jump to live proof ↓

24. Angular concepts in practice

Answer as submitted

“Yes — all of these are part of my everyday Angular practice, not occasional exposure.”
Technical decision: expand. The submitted line claims fluency but shows nothing. This page is the separate, detailed version: it takes the concepts the question lists and shows how each is implemented, plus the effect on bundle size, navigation, network behaviour and form reliability.

Expanded answer

All of them are part of everyday practice. Lazy loading by route boundary with preloading for the next likely area and bundle budgets in CI. Guards and resolvers (canActivate, canMatch, canDeactivate) so authorisation and data are decided before a component is created. Functional interceptors for token attachment, single refresh-and-replay on 401, retries limited to idempotent calls, and a correlation id on every request. RxJS composition with the operator that matches the semantics (switchMap for cancellable reads, combineLatest for derived views, takeUntilDestroyed for teardown) alongside signals for local state and a store for genuinely shared state. Reusable components with typed inputs/outputs and content projection, custom directives and pipes for cross-cutting presentation, and typed reactive forms with cross-field and debounced async validators.

ConceptHow it is appliedWhy it is done this way
Lazy loadingloadChildren/loadComponent + preloadingThe first route ships only what it needs; the rest warms after idle.
GuardscanActivate, canMatch, canDeactivateAuthorisation decided before work starts; no silent loss of edited data.
Resolversroute resolveThe page renders with data instead of flashing an empty state.
Interceptorsfunctional withInterceptorsAuth, retry and tracing are declared once, not repeated per service.
RxJSswitchMap, combineLatest, lifecycle teardownCancellation and composition are explicit; no leaking subscriptions.
Statesignals locally, store for shared stateLocal state stays local; only genuinely shared state pays for a store.
Reusabilitytyped inputs/outputs, projection, directives, pipesPresentation logic is shared instead of copy-pasted per screen.
Formstyped reactive forms + validatorsThe client mirrors the API contract and the server still re-validates.

Live Angular concept workflow proof

The running component below changes its concept/result view through real event binding. Select a concept to see the code shape, the reasoning behind it, and the measurement taken from the application.

LIVE PREVIEW
RUNNING
ANGULAR WORKFLOWRUNNING

Choose an Angular concept

Select a concept to inspect the code shape, the reasoning and the measured result.

$ loadChildren: () => import('./orders/orders.routes').then(m => m.ORDERS_ROUTES) + withPreloading(PreloadAllModules)

Each feature area is split at the route boundary, and a preloading strategy warms the next likely route instead of shipping the whole application in the first bundle.

initial bundle 210 KB → 78 KB gzip
3 of 5 feature areas preloaded after idle

Why the concepts earn their place

Rules I apply. Split at the route boundary and budget the result; decide authorisation before a component exists; resolve data so nothing renders empty; keep auth, retry and tracing in interceptors rather than in every service; choose the flattening operator for the semantics you actually need and tear streams down with the lifecycle; keep local state local and share only what is truly shared; and make forms typed and validated on both sides. These are conventions a team can review, which is what makes them durable.
Boundary for Q24: this page covers the concepts named in the question. Migration between Angular versions, SSR/hydration strategy and Angular performance profiling are separate topics.

Source files

Select a file to inspect the proof with syntax highlighting and line numbers. The first file is the code running the component above; the other two are the production shapes of these concepts.

Acceptance criteria