Curated chronological list of learning resources for Angular, from complete beginner to advanced level
# Angular learning resources

Curated list of learning resources for Angular, from complete beginner to advanced level.
Everything you need to learn in chronological order to become a professional Angular developer.

# ⇒ Prerequisites 

### Javascript:

- [JavaScript ES6 tutorial](https://codeburst.io/es6-tutorial-for-beginners-5f3c4e7960be)
- [Principles of functional programming in JavaScript](https://flaviocopes.com/javascript-functional-programming/)
- [Functional Programming with JavaScript](https://codeburst.io/functional-programming-in-javascript-e57e7e28c0e5)

### TypeScript:

- [Official Documentation](https://www.typescriptlang.org/docs/home.html)
- [Official Handbook](https://www.typescriptlang.org/docs/handbook/basic-types.html)
- [TS deepdive Gitbook by Basarat Syed](https://basarat.gitbooks.io/typescript/)
- [Object Oriented Programming with TypeScript](http://rachelappel.com/write-object-oriented-javascript-with-typescript/)
- [Functional programming with TypeScript](https://vsavkin.com/functional-typescript-316f0e003dc6)


# ⇒ Beginner
- [Getting started official tutorial](https://angular.io/tutorial)
- [Official Docs](https://angular.io)
- [Components & Templates](https://angular.io/guide/displaying-data)
- [Component interaction](https://angular.io/guide/component-interaction)
- [Structural Directives](https://angular.io/guide/structural-directives)
- [Dependency Injection & Services](https://angular.io/guide/architecture-services)
- [Programming Style guide](https://angular.io/guide/styleguide)


# ⇒ Intermediate

### Reactive programming - RxJS:
- [Introduction to RxJS - RxJS Primer](https://www.learnrxjs.io/concepts/rxjs-primer.html)
- [The introduction to reactive programming with RxJS](https://www.learnrxjs.io/)
- [RxJS Video Course](https://www.youtube.com/watch?v=Tux1nhBPl_w)
- [Learn RxJS - Organised API Reference](https://www.learnrxjs.io/)
- [RxMarbles: Interactive diagrams of Rx Observables](http://rxmarbles.com/)
- [RxJS Docs](https://rxjs-dev.firebaseapp.com/)

### Going further with Angular:
- [Managing projects with Angular CLI](https://github.com/angular/angular-cli/wiki)
- [Angular HTTP Client](https://angular.io/guide/http)
- [Reactive Forms](https://angular.io/guide/reactive-forms)
- [Angular Routing & Navigation](https://angular.io/guide/router)
- [Angular Material Component Library](https://material.angular.io/)
- [Nebular Component Library](https://akveo.github.io/nebular/)
- [Testing](https://angular.io/guide/testing)

# ⇒ Advanced

### State management:
- [Simple and powerful state management with only Services and RxJS (for 90% of cases, this method of state management is more than enough)](https://dev.to/avatsaev/simple-state-management-in-angular-with-only-services-and-rxjs-41p8)
- [NGRX - Angular state management library](https://github.com/ngrx/platform)
- [Quick intro to Redux style state management with NGRX](https://www.youtube.com/watch?v=f97ICOaekNU)
- [State management with NGRX tutorial](https://coursetro.com/posts/code/151/Angular-Ngrx-Store-Tutorial---Learn-Angular-State-Management)
- [In depth introduction to NGRX/Redux state management](https://medium.com/@bencabanes/redux-introduction-with-ngrx-part-1-store-application-state-2c47c35376ea)
- [NGRX advanced patterns & techniques](https://blog.nrwl.io/ngrx-patterns-and-techniques-f46126e2b1e5)

#### Alternatives to NGRX:

- [NGXS](https://github.com/ngxs/store)
- [Akita](https://netbasal.gitbook.io/akita/entity-store/blog-posts)

### Dependency injection:
 - [Advanced dependency injection](https://angular.io/guide/dependency-injection-providers)
 - [Dependency inversion](https://netbasal.com/demystifying-the-dependency-inversion-principle-in-angular-a2daca9b05ee)
 
### Angular change detection engine:
- [How change detection works](https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html)


### Perfomance:
- [Performance guide for Angular apps](https://blog.angular.io/3-tips-for-angular-runtime-performance-from-the-real-world-d467fbc8f66e)
- [Optimizing performance in Angular apps](https://netbasal.com/optimizing-the-performance-of-your-angular-application-f222f1c16354)
- [OnPush change detection strategy in details](https://netbasal.com/a-comprehensive-guide-to-angular-onpush-change-detection-strategy-5bac493074a4)

### Angular libraries:

- [Creating Angular libraries with Angular CLI](https://blog.angulartraining.com/create-your-own-libraries-with-angular-cli-7b434600bbb7)
- [Publishing Angular component libraries](https://medium.com/@faxemaxee/building-and-publishing-angular-libraries-using-angular-cli-140057d21101)


# Useful Blogs / Video courses / Youtube Channels / Example apps

<a href="https://ultimatecourses.com/courses/angular/ref/azero79/" title="Ultimate Courses"><img src="https://ultimatecourses.com/assets/img/banners/ultimate-angular-github.svg" alt="Ultimate Courses" /></a>

- [Angular Udemy video Course from, beginner to Pro level (~$10)](https://www.udemy.com/the-complete-guide-to-angular-2/)
- [Angular Firebase - Quick short tutorials on advanced topics](https://www.youtube.com/channel/UCsBjURrPoezykLs9EqgamOA)
- [Angular MIX - Youtube Channel](https://www.youtube.com/channel/UCnUpEUN4V3iJxoUximdr6Nw/videos)
- [Discover Angular courses](https://bestcourses.io/results?q=angular&size=n_20_n)
- [Todd Motto - Youtube Channel](https://www.youtube.com/channel/UCNtFk-g4CCmXMYL4pYNmoEA/videos)
- [Angular Connect - Youtube Channel](https://www.youtube.com/channel/UCzrskTiT_ObAk3xBkVxMz5g/videos)
- [Free Angular courses from Coursetro - YouTube](http://www.youtube.com/user/designcourse)
- [Todd Motto - Blog](https://toddmotto.com/)
- [Angular Subreddit](https://www.reddit.com/r/Angular2/)
- [Angular In Depth - Advanced understanding of inner workings](https://blog.angularindepth.com/)
- [Netanel Basal - Advanced Practical Tutorials](https://netbasal.com/@NetanelBasal)
- [Full Stack Contacts Book example app (Components, Services, Routing, Http, Forms, Lazy loading, Sockets, NGRX State management, NGRX HTTP+Socket.IO Side Effects management, NGRX Entity management...)](https://github.com/avatsaev/angular-contacts-app-example)





