Adaptive Angular diagnostic¶
Use this diagnostic to choose a learning route, not to produce one course-wide score. A tutor or study partner should ask one question at a time, wait for the answer, and adapt: increase difficulty after strong evidence; step down and inspect the mental model after uncertainty.
Protocol¶
- Ask one calibration question from an area.
- Require a prediction or explanation before running code.
- If correct, ask an application or debugging probe. If still correct, ask for a tradeoff under changed constraints.
- If incorrect, ask what model produced the answer; do not immediately reveal the solution.
- Record Dreyfus level, confidence, evidence, and the next lesson in the learning map.
“I know this” is not evidence. One pointed verification is enough to confirm it.
Question ladder¶
For each concept move through: Remember → Understand → Apply → Analyze → Evaluate → Create. Stop when performance becomes unreliable; the boundary identifies the next practice target.
Fundamentals and rendering¶
- Recall: What belongs to a standalone component's
imports, and what belongs to providers? - Predict: What happens when
RouterOutletis used in a template but routing providers exist and the outlet is not imported? - Code reading: In an
@forover reorderable rows, what state can move when tracking by$index? - Debug: A child input retains the wrong row after sorting. Identify the runtime identity error before changing code.
- Evaluate: Choose eager or lazy loading for a small frequently visited dashboard and name evidence that could reverse your choice.
Route gaps to App anatomy, Templates and control flow, or Component communication.
State and dependency injection¶
- Explain: Distinguish writable source state, derived state, and side effects.
- Predict: What can go wrong when an
effectcopies one signal into another? - Debug: Progress updates in one route but disappears from another. Trace injector boundaries and instance lifetime.
- Evaluate: Decide whether a store belongs at root, parent-route, route, or component scope.
- Create: Sketch a storage capability that remains testable and does not break SSR.
Route gaps to Signals and state or Dependency injection.
Routing and forms¶
- Explain: Why is a route guard navigation policy rather than backend authorization?
- Apply: Design a deep-linkable topic detail route with unknown-ID behavior.
- Predict: Which values disappear from
form.valuewhen a control is disabled? - Debug: A valid-looking form sends an incomplete command; identify whether the form model or command model is wrong.
- Evaluate: Resolver versus component loading state under slow or unreliable networks.
Route gaps to Routing or Typed reactive forms.
HTTP and RxJS¶
- Explain: Why can two subscriptions to an
HttpClientobservable cause two requests? - Predict: What happens when
catchErrorsits outsideswitchMapand one inner request fails? - Apply: Choose a higher-order mapping operator for autocomplete reads, ordered writes, and duplicate-submit prevention.
- Debug: Search results go backward while typing quickly on a slow network.
- Evaluate: Decide where to bridge an observable to a signal and defend the ownership boundary.
Route gaps to HTTP and async state, RxJS reasoning, or Signals vs RxJS.
Testing and debugging¶
- Apply: Select the narrowest useful boundary for a store transition, route redirect, and HTTP mapping failure.
- Analyze: A test changes a signal and reads stale DOM. What scheduling evidence is missing?
- Debug: A test passes alone but fails in the suite; identify uncontrolled state before editing assertions.
- Evaluate: Name what should not be mocked in a behavior-focused component test.
- Create: Propose a risk-based test portfolio for a feature with validation, navigation, and persistence.
Route gaps to Testing and the debugging challenges.
Performance and production engineering¶
- Explain: Why can
OnPushand signals fail to improve a slow list? - Analyze: Separate startup, interaction, rendering, network, and memory evidence.
- Debug: A browser-global storage token crashes during server rendering.
- Evaluate: Choose CSR, SSR, or SSG for a personalized application and state the operational tradeoff.
- Create: Define accessibility, security, observability, performance, deployment, and rollback acceptance criteria.
Route gaps to Performance, Architecture and production, or system-design challenges.
Placement output¶
Finish with a table, not a percentage:
| Area | Dreyfus level | Confidence | Strongest evidence | Failure boundary | Route |
|---|---|---|---|---|---|
| Fundamentals | |||||
| Runtime/internals | |||||
| Architecture | |||||
| Debugging | |||||
| Performance | |||||
| Security | |||||
| Production operations |
Begin with the weakest prerequisite that blocks useful work. Do not automatically start at Lesson 1.