Fork me on GitHub

Angular Progression Ladder

The Angular progression ladder is a grouping of concepts and skills relevant to Angular programming. It provides aspiring Angular programmers with a way to track and improve their Angular skills.

novice
CONCEPTS SKILLS RESOURCES COMPLETED
Angular versioning The Angular versioning & release schedule link link
Angular CLI Angular CLI is a tool to initialize, develop, scaffold & maintain Angular applications link link
Bootstrapping the application Learn how to bootstrap the application link
Components Introduction to components, templates, views & syntax link link link
Component's template in-line HTML template of components in-line link link
Component's style Component's style, special selectors, in-line styles link link link
Life-cycle hooks Learn where components trigger actions at specific points in the lifecycle link
Interpolation Interpolation in Angular for binding, template expressions & expression/statement context link link link link
Property binding How to bind into properties, targets or use interpolation instead link link link
Other bindings Attribute binding, class binding, style binding, event binding link link link link
NgFor How to use the built-in NgFor structural directive link
NgIf & NgIf-Else How to use the built-in NgIf & Else structural directives link link link
NgSwitch How to use the built-in NgSwitch structural directive (NgSwitch, NgSwitchCase & NgSwitchDefault) link
NgStyle How to set inline styles dynamically by NgStyle link
Services Introduction to services, DI, singleton services & examples link link link
HttpClient Usage of HttpClient service, reading response, headers & more usages link link link link
Feature Module NgModules for the purpose of organizing code link
Browser support Supported browsers & polyfills link link link
Typescript configuration Overview about TS configuration for Angular projects link
Deployment Deploying your Angular application & optimizing for production link link
advanced_beginner
CONCEPTS SKILLS RESOURCES COMPLETED
Communication from parent to child How to communicate from parent to child via Input link
Intercept Input property changes Learn how to intercept Input property changes by Setter & ngOnChanges link link
Communication from child to parent How to communicate from child to parent via Output link
Communication by service How to communicate among components by service link
ViewChild & ViewChildren Learn more about ViewChild & ViewChildren APIs link link link
AfterViewInit & AfterViewChecked Learn more about AfterViewInit & AfterViewChecked events APIs link link link
Directives Directive overview, types, respond to events & binding to Input property link link link
Pipes Parameterizing pipes, chaining pipes & custom pipes link link link
Built-in pipes Get to know the built-in Angular pipes link link link link link link
Pure pipes & Impure pipes Learn the differences between pure pipes & impure pipes link link
Routing fundamentals Router outlet, router links, active router links & registering routes link link link link
Activated route Full view of what the activated route API exposes link
Hash location strategy Hash location strategy vs Path location strategy link link
competent
CONCEPTS SKILLS RESOURCES COMPLETED
Environments Set up different named build configurations with different defaults link link
AOT Compiler The Ahead-of-Time (AOT) compiler link link
Template driven forms Introduction, example, data flow & testing template driven forms link link link link
Template driven validation Form validation in template driven forms link link
Reactive vs Template Common & differences of reactive & template driven forms link link
Reactive forms Introduction, example, data flow & testing reactive forms link link link link
Reactive validation Form validation in reactive forms link link
Modules import order Notice the modules import order link
Sharing modules Organize and reuse shared modules link
Routing: Wildcard Intercept invalid URLs by adding wildcard routes link
Routing: Redirects Redirect URLs to the default route link
Routing: Parameters Get route params, either using observables or snapshots link link link
proficient
CONCEPTS SKILLS RESOURCES COMPLETED
RxJS: Observables Learn basics of Observable, subscribing, error handing and practice! link link link link link link
Async pipes Impure async pipes, caching pipe, pure pipes & managing subscriptions link link link link
Lazy loading modules Learn lazy loading feature modules & routing configuration link link
Guards Learn guards, can-active and securing routes link link link
Testing: Set Up Setting up & Continuos Integration link link link link
Testing: Implementation Testing services, components, attribute, directives, pipes & debugging link link link link link
Content projection Use content projection to reuse flexible components link link
Change detection Change detection mechanism, dive deeper, on push detection & ExpressionChangedAfterItHasBeenCheckedError link link link link link
View encapsulation Look at the shadow dom view encapsulation link
Language service See the Angular language service, Installing it & Set it up on your IDE link link link
expert
CONCEPTS SKILLS RESOURCES COMPLETED
Security in Angular Security contexts, Sanitization, XSS, Safe values & Http vulnerabilities link link link link link
Internationalization: i18n Setting up locales, pipes, template translations, source files, plurals & merging link link link link link link
Service workers Learn the prerequisites, getting started & tutorial for PWA link link link
Angular Universal A complete tutorial per steps of how to prepare your app for Angular Universal link link link link link link
Dynamic components Loading components at runtime & dynamic content projection link link
Dynamic forms Creating forms dynamically link link link
Angular animations Getting started, simple transition, state, styles & timing link link link
Routing with animations Add animations to routings link link
Please note: This section is about Angular Framework, if you are looking to know more about Typescript check out the Typescript section
This is a community-driven document, please share your feedback, help us to improve it. Please open an issue or send us a PR on Github!

Contributors

Alejandro Lora https://twitter.com/alexpc_

We need your help!

This is a community-driven project, please share your feedback and help us to improve it.
Please open an issue or send us a PR on GitHub!