Angular 4 NgRx Store Masterclass & FREE E-Book
4.3 (320 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,948 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Angular 4 NgRx Store Masterclass & FREE E-Book to your Wishlist.

Add to Wishlist

Angular 4 NgRx Store Masterclass & FREE E-Book

Covers Angular 4 (formerly Angular 2) - Learn the Angular Ngrx Store Library, Build a Chat Application
Best Seller
4.3 (320 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,948 students enrolled
Last updated 8/2017
English
Current price: $10 Original price: $150 Discount: 93% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 8.5 hours on-demand video
  • 3 Articles
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Build a Chat Application From to to bottom
  • Understand the Flux Architecture, its benefits, strong points and most beneficial use cases
  • Understand Single Store Architecture solutions like Redux or Ngrx Store
  • Know all the usual notions of Store solutions, like Actions and Reducers
  • Know how to model the application state of a single store architecture, leveraging Typescript custom types to do so
  • Know the difference between a model and a view model and what to put inside the store
  • know how to derive a view model from a model and how to do that
  • understand the notion of selector in the context of store solutions
  • know the difference between smart components and presentation components
  • know how to build smart components using the Ngrx Store library
  • know how to use the Ngrx Effects library
  • know not only the Ngrx libraries but know also how they all fit together and what are the benefits of a store solution
  • know how to setup the Ngrx store developers tools
  • know how to debug RxJs applications in general
View Curriculum
Requirements
  • Angular 2 or Above
  • Typescript
  • HTML
  • CSS
  • REST APIs
Description

In this course we are going to learn the Angular Ngrx library ecosystem, namely everything that revolves around the Ngrx Store and Ngrx Effects library, and store architectures in general.

The course covers the Angular 4 release (the previous release was Angular 2), and consists on building step-by-step a chat application. 

One Of The Most Famous Bugs Of All Time ?

Let me take you through a journey in time. Let's jump on a time machine and go back to 2014: we find ourselves in the Facebook headquarters at Menlo Park. Not only we went back in time, but we found ourselves becoming part of one of the most advanced software development teams in the world.

You might think that the team would be busy adding some new feature, but at our arrival the team is working relentlessly trying to fix one particular bug: something as simple as a counter of unread messages in a chat system.

This is one of those situations that only a developer could understand. The team tries to fix the bug in all sorts of ways, but the bug keeps coming back, month after month ! The counter says that there are several unread messages: the user clicks on the counter and there is nothing there.

Its a super visible bug in the biggest web application in the world: 1.3 Billion users and counting, endless resources to spare, some of the very best software teams in the world.

And yet an apparently simple but highly elusive bug just keeps coming back: a counter is incorrectly calculated: how can this happen ? That's what you will find out in this course.

A Bug That Originated a New Architecture ?

How could such an advanced team with nearly limitless resources struggle to fix a single bug ? As a developer you might find that this situation is really not that surprising; you might have been in a place and time when you had to tell your manager that the application can't be saved: that its so badly written that its needs to be rebuilt from scratch.

If it has never happened to you, it probably will during your development career. You have found an architecture problem in your application: happens to every team.

In this course we are going to understand exactly what was the real problem behind the Facebook counter bug, and learn the new frontend software architecture that it originated: Flux.

This new architecture was presented to the world in a series of talks. Those talks included a demo of the original chat counter problem. Have you ever seen that demo chat application in the third talk of the Flux recommended talks ?  That's what you will be building in this course.

What Will We Build In This Course ?

We are going to build step by step a chat application that reproduces the situation that the Facebook team faced with the unread messages counter. We are going to solve the problem not by using the original Flux dispatcher, instead we are going to use a derived single store RxJs-based solution: The Angular Reactive Extensions Ngrx Store.

We are going to use the Angular CLI to quickly scaffold an application, and implement the frontend of the chat application from scratch: from an empty folder - every line of code will be explained.

The backend will also be explained but we will initially get a running backend as a starting point, so that we focus on the frontend architecture and the store solution.

We are going to build the application using Reactive Programming principles and a set of libraries of the Angular Reactives Extensions (Ngrx) Ecosystem: this will include the Ngrx Store, Ngrx Effects, DB, Router integration.

We are going to cover the benefits of Immutability and OnPush change detection, its advantages and disadvantages.

What Will you Learn In this Course?

We are going to learn how to leverage Typescript to clearly define the domain model, the view model and even transfer models of our application, as well as the application state that goes inside the store.

We are going to learn what types of state are usually kept inside the store, and how they relate to the state in the database. We will learn all the usual concepts of Store architectures: Actions, Dispatching and Reducers.

We will cover the Ngrx Dev Tools including the time-traveling debugger, and we will introduce a small utility library to helps us debug RxJs applications in general. We will cover debugging techniques for our Typescript code in both the client and the server.

We will cover backend API design for frontends that use store architectures: what type of API to design if building an API from scratch, and how to integrate a store with existing APIs.

Course Overview

The course will start with a short architectural overview on the Facebook counter problem, Flux and unidirectional data flow. We will then dive straight into the building of the frontend of our chat application.

Once we have a store solution up and running we are going to introduce the Dev Tools and add more libraries of the Ngrx ecosystem step by step.

What Will You Be Able to to at the End Of This Course ?

The goal of the course is simple: you will be proficient in the Flux and single store architectures and will know when to use a store solution and why, what are the reasons and more common use cases for doing so.

You will be able to use Typescript to model all the data structures needed for the several different layers of your application. You will know how to develop applications using RxJs and the Ngrx Store, understand the concepts related to store architectures and know how to setup the developers tools and use the most important libraries of the Ngrx ecosystem.

Free samples of multiple parts of the course are available.

Who is the target audience?
  • Angular Developers looking to Learn Ngrx Store and its surrounding Library Ecosystem
Compare to Other AngularJS Courses
Curriculum For This Course
90 Lectures
08:29:05
+
Introduction - The Flux Architecture
3 Lectures 13:43
+
Scaffolding the Chat Application - Gettting The Most Important Part Right
10 Lectures 45:45
Installing an IDE - Webstorm or Visual Studio Code
03:43

IMPORTANT: Using Yarn instead of NPM To Avoid Installation Issues
00:52


Installing The Lodash Utility Library
02:35

Using the Angular CLI to Scaffold All Application Components
06:25

What Should be put inside the Store ?
02:20

A Critical Notion For Any UI We Build - Model vs View Model
04:47

Using Typescript Custom Types To Define The Application Model
04:10

Implement a Simple In-Memory Database, Learn What Goes Inside a Store
07:16

First HTTP Call - What is a Transfer Object ?
08:51
+
Introducing A Store Solution - The Ngrx Store, Actions And Reducers
10 Lectures 51:46
Store Concepts Introduction
02:52

How To Switch Git Branches During The Course
03:59

Getting a REST API Server Running
04:58

Installing A Store Solution
02:18

Defining The Store Application State - How Many Types Of State Are Th
06:03

The Store as an Observable of Application State
04:40

Dispatching Our First Store Action
06:27

Setting The Store Initial State - Debugging First Action Dispatch
07:36

Writing Our First Reducer Function Step By Step
08:39

Summary Of How a Store, Actions and Reducers Work
04:14
+
Implementing The Thread Section View Using Reactive Programming
10 Lectures 49:24
Smart Components and Reactive Programming Techniques - Introduction
03:38

Building the Thread Section Using Reactive Programming
09:18

See How Simple It Is To Implement An Unread Messages Counter Using A Store
06:09

A Simple Way To Debug An Angular Program
01:45

Defining a View Model - Difference Between View Model and Model
04:27

Refactoring the Thread Section Component - Extracting Mapping Functions
01:37

Writing The Thread Summaries Selector
07:38

Implementing our First Presentational Component - The Thread List Component
04:55

Refactoring The Selector Functions of The Thread Section Component
04:54

Best Practices for Writing Selector Functions
05:03
+
Ngrx Effects and the NgRx Dev Tools
7 Lectures 31:29
Ngrx Effects and DevTools Introduction
01:48

Simplifying Smart Components - The Ngrx Effects Library
04:18

Understanding the NgRx @Effect Decorator - How to Use It ?
04:33

The Added Value Of Ngrx Effects and How It Simplifies Smart Components
02:59

The Ngrx Store DevTools and the Time Travelling Debugger
05:21

How to Debug RxJs Code ?
05:28

A Simple RxJs Debugging Utility
07:02
+
Implementing the Message Section Smart Component
13 Lectures 01:22:57
Selecting A Thread - Initial Implementation
05:49

Understanding Combine Reducers
10:58

Writing The Reducing Logic of Select Thread Action
01:59

Introducing the Message Section Component
04:45

Message Section - Reviewing the Implementation of the Name List Selector
08:46

Review of The Messages List Implementation - View to View Model Mapping
04:52

Implementation of the Highlight Selected Thread Functionality
03:35

Implementation of the Change Selected User Smart Component
06:31

Change User Effect Implementation - An Example of a Chain Of Actions
03:03

Change Current User Implementation - Backend and Frontend
11:47

Implementing the Send New Message Chat Functionality
09:29

Implementation of the Send New Message Reducer
06:55

Scrolling the Message List To the Bottom Automatically Using OnChanges
04:28
+
Getting The Chat Functionality Up and Running !
14 Lectures 01:27:26
Solving the Facebook Counter Problem - Section Introduction
05:11

Implementing The Write New Message Effect Using Ngrx Effects
07:37

Send New Message Implementation - Client Part
06:13

New Server Branch - View Send New Message In Action
04:38

Refresh Chat Messages Side Effect Implementation
06:36

Fetch New Messages - Implementing the Reducer Logic
04:55

Finish Implementing the Refresh Messages HTTP Service
10:10

Implementing The unread Messages Counter Reducing Logic
08:02

Unread Message Counter - See The Solution for The Facebook Counter Issue
04:44

Marking Threads With New Messages As Unread
06:40

Implementing the Mark Messages As Read Reducer Logic
10:23

Mark Threads as Read - Demo of The Nearly Completed Chat
01:45

Implementing The Mark Messages As Read Side-Effect
07:28

Chat Wrap Up - Summary Of The Advantages Of Store Architectures
03:04
+
Finishing Up - Error Handling, Router Integration, Ngrx Store Freeze
6 Lectures 33:06
Error Handling With Ngrx Store - How To Use The RxJs Catch Operator
06:02

Implementing the Error Handling Reducer Logic
02:27

Displaying Errors On the Screen - Implementing the Messages Smart Component
06:43

Immutability In Reducer Functions - How to Use the Ngrx Store Freeze Library
05:22

Adding the Angular Router to the Chat Application
06:42

Ngrx Store Router Integration - Time-Travelling with the Dev Tools
05:50
+
Performance Tuning - Immutability and OnPush Change Detection
13 Lectures 01:23:08
OnPush Change Detection and Immutability - What Are the Advantages ?
07:36

Why Freezing Selector Output Does Not Help Leverage OnPush Change Detection
04:20

Understanding How OnPush Change Detection Works And How To Leverage It
04:19

How To Write Reducers That Leverage OnPush Change Detection
11:36

Refactoring Remaining Reducers - Will This Be Enough To Leverage OnPush ?
09:13

Introducing a New Functional Programming Concept - Memoization
06:41

Introducting The Reselect Library - How To Create a Memoized Selector
02:58

How To Write a Memoized Selector With Reselect - What is The Advantage ?
07:52

Using the Lodash Memoize Utility To Optimize View Rendering
07:47

Preventing Message Re-Renderings Using a Presentational Component
05:41

On Push Change Detection Summary - Smart Vs Presentational Components
02:08

High-Level Overview of The ImmutableJs Library
05:23

Course Summary and Conclusions
07:34
+
Building A Development Server
4 Lectures 30:29
Building The Get All User Data REST API From A to Z
19:32

Running And Debugging Our ts-node Development Server
06:00

Calling Our REST API Server From the Client - Configuring the Angular CLI
03:39

Bonus Lecture: Learn More About The Angular University And My YouTube Channel
01:18
About the Instructor
Angular University
4.3 Average rating
1,482 Reviews
12,357 Students
7 Courses
Learn and Keep Up with The Angular Ecosystem

About the Angular University:

The Angular University aims to be the one place that you  go in order to learn and keep up with the Angular ecosystem. We provide premium quality video tutorials, screencast style.

About the course instructor:

Hello, my name is Vasco  and I'm a Software Developer with 17 years of experience, very seasoned building user interfaces with Angular. I've worked as a Frontend Developer/Architect in a large variety of enterprise projects throughout the years.   

I worked on a ton of projects, everything from single page applications to help build the European Criminal Record Information Exchange System, to brand new e-banking portals, to corporate banking portals, and more. I've been a key part of internal framework teams that built frameworks for in-house departments of tens of developers. And that's just a few of them, please check my Linkedin for extensive recommendations.

I also love to teach, write and talk about technology.  I am looking forward to be your Angular  instructor,

Kind Regards,

Vasco