Getting back to work and progress after Coronavirus | Please use #TOGETHER at checkout for 30% discount
Testprep Training Ltd.

Angular 8 Online Course

Angular 8 is the latest version of Angular and this course starts from scratch. From setup to deployment, this course covers it all.

You'll learn all about components, directives, services, forms, HTTP access, authentication, optimizing an Angular app with modules and offline compilation, and much more - and in the end, you'll learn how to deploy an application! But that's not all! This course will also show you how to use the Angular CLI and feature a complete project, which allows you to practice the things learned throughout the course.

Angular is one of the most modern, performance-efficient and powerful frontend frameworks you can learn today. It allows you to build great web apps that offer awesome user experiences. Learn all the fundamentals you need to know to get started developing Angular applications right away. 

This Course uses TypeScript - TypeScript is the main language used by the official Angular team and the language you'll mostly see in Angular tutorials. It's a superset to JavaScript and makes writing Angular apps easy. Using it ensures, that you will have the best possible preparation for creating Angular apps. 


The course mainly focuses on:-

  • Which architecture Angular uses
  • How to use TypeScript to write Angular applications
  • All about directives and components, including the creation of custom directives/ components


Course pre-requisites

  • No previous Angular of knowledge is required!
  • Basic HTML and CSS knowledge helps but isn't a must-have
  • Prior TypeScript knowledge also helps but isn't necessary to benefit from this course
  • Basic JavaScript knowledge is required


Course Curriculum

1. Getting Started

  • Course Introduction
  • What is Angular?
  • Angular vs Angular 2 vs Angular 8
  • Project Setup and First App
  • Editing the First App
  • The Course Structure
  • How to get the Most out of the Course
  • What is TypeScript?
  • A Basic Project Setup using Bootstrap for Styling

2. The Basics

  • Module Introduction
  • How an Angular App gets Loaded and Started
  • Components are Important!
  • Creating a New Component
  • Understanding the Role of AppModule and Component Declaration
  • Using Custom Components
  • Creating Components with the CLI & Nesting Components
  • Working with Component Templates
  • Working with Component Styles
  • Fully Understanding the Component Selector
  • Assignment Solution
  • What is Databinding?
  • String Interpolation
  • Property Binding
  • Property Binding vs String Interpolation
  • Event Binding
  • Passing and Using Data with Event Binding
  • Two-Way-Databinding
  • Combining all Forms of Databinding
  • Assignment Solution
  • Understanding Directives
  • Using ngIf to Output Data Conditionally
  • Enhancing ngIf with an Else Condition
  • Styling Elements Dynamically with ngStyle
  • Applying CSS Classes Dynamically with ngClass
  • Outputting Lists with ngFor
  • Assignment Solution
  • Getting the Index when using ngFor

3. Course Project - The Basics

  • Project Introduction
  • Planning the App
  • Setting up the Application
  • Creating the Components
  • Using the Components
  • Adding a Navigation Bar
  • Creating a "Recipe" Model
  • Adding Content to the Recipes Components
  • Outputting a List of Recipes with ngFor
  • Displaying Recipe Details
  • Working on the ShoppingListComponent
  • Creating an "Ingredient" Model
  • Creating and Outputting the Shopping List
  • Adding a Shopping List Edit Section
  • Wrap Up & Next Steps

4. Debugging

  • Understanding Angular Error Messages
  • Debugging Code in the Browser Using Sourcemaps
  • Using Augury to Dive into Angular Apps

5. Components & Databinding Deep Dive

  • Module Introduction
  • Splitting Apps into Components
  • Property & Event Binding Overview
  • Binding to Custom Properties
  • Assigning an Alias to Custom Properties
  • Binding to Custom Events
  • Assigning an Alias to Custom Events
  • Custom Property and Event Binding Summary
  • Understanding View Encapsulation
  • More on View Encapsulation
  • Using Local References in Templates
  • Getting Access to the Template & DOM with @ViewChild
  • Projecting Content into Components with ng-content
  • Understanding the Component Lifecycle
  • Seeing Lifecycle Hooks in Action
  • Lifecycle Hooks and Template Access
  • Getting Access to ng-content with @ContentChild
  • Wrap Up
  • Assignment Solution

6. Course Project - Components & Databinding

  • Introduction
  • Adding Navigation with Event Binding and ngIf
  • Passing Recipe Data with Property Binding
  • Passing Data with Event and Property Binding (Combined)
  • Allowing the User to Add Ingredients to the Shopping List

7. Directives Deep Dive

  • Module Introduction
  • ngFor and ngIf Recap
  • ngClass and ngStyle Recap
  • Creating a Basic Attribute Directive
  • Using the Renderer to build a Better Attribute Directive
  • Using HostListener to Listen to Host Events
  • Using HostBinding to Bind to Host Properties
  • Binding to Directive Properties
  • What Happens behind the Scenes on Structural Directives?
  • Building a Structural Directive
  • Understanding ngSwitch

8. Course Project – Directives

  • Building and Using a Dropdown Directive

9. Using Services & Dependency Injection

  • Module Introduction
  • Why would you Need Services?
  • Creating a Logging Service
  • Injecting the Logging Service into Components
  • Creating a Data Service
  • Understanding the Hierarchical Injector
  • How many Instances of Service Should It Be?
  • Injecting Services into Services
  • Using Services for Cross-Component Communication
  • Assignment Solution

10. Course Project - Services & Dependency Injection

  • Introduction
  • Setting up the Services
  • Managing Recipes in a Recipe Service
  • Using a Service for Cross-Component Communication
  • Adding the Shopping List Service
  • Using Services for Pushing Data from A to B
  • Adding Ingredients to Recipes
  • Passing Ingredients from Recipes to the Shopping List (via a Service)

11. Changing Pages with Routing

  • Module Introduction
  • Why do we need a Router?
  • Setting up and Loading Routes
  • Navigating with Router Links
  • Understanding Navigation Paths
  • Styling Active Router Links
  • Navigating Programmatically
  • Using Relative Paths in Programmatic Navigation
  • Passing Parameters to Routes
  • Fetching Route Parameters
  • Fetching Route Parameters Reactively
  • An Important Note about Route Observables
  • Passing Query Parameters and Fragments
  • Retrieving Query Parameters and Fragments
  • Practicing and some Common Gotchas
  • Setting up Child (Nested) Routes
  • Using Query Parameters – Practice
  • Configuring the Handling of Query Parameters
  • Redirecting and Wildcard Routes
  • Outsourcing the Route Configuration
  • An Introduction to Guards
  • Protecting Routes with canActivate
  • Protecting Child (Nested) Routes with canActivateChild
  • Using a Fake Auth Service
  • Controlling Navigation with canDeactivate
  • Passing Static Data to a Route
  • Resolving Dynamic Data with the resolve Guard
  • Understanding Location Strategies
  • Wrap Up

12. Course Project – Routing

  • Planning the General Structure
  • Setting up Routes
  • Adding Navigation to the App
  • Marking Active Routes
  • Fixing Page Reload Issues
  • Child Routes: Challenge
  • Adding Child Routing Together
  • Configuring Route Parameters
  • Passing Dynamic Parameters to Links
  • Styling Active Recipe Items
  • Adding Editing Routes
  • Retrieving Route Parameters
  • Programmatic Navigation to the Edit Page
  • One Note about Route Observables

13. Understanding Observables

  • Module Introduction
  • Analyzing Angular Observables
  • Getting Closer to the Core of Observables
  • Building a Custom Observable
  • Errors & Completion
  • Observables & You!
  • Understanding Operators
  • Subjects
  • Wrap Up

14. Course Project – Observables

  • Improving the Reactive Service with Observables (Subjects)

15. Handling Forms in Angular Apps

  • Module Introduction
  • Why do we Need Angular's Help?
  • Template-Driven (TD) vs Reactive Approach
  • An Example Form
  • TD: Creating the Form and Registering the Controls
  • TD: Submitting and Using the Form
  • TD: Understanding Form State
  • TD: Accessing the Form with @ViewChild
  • TD: Adding Validation to check User Input
  • TD: Using the Form State
  • TD: Outputting Validation Error Messages
  • TD: Set Default Values with ngModel Property Binding
  • TD: Using ngModel with Two-Way-Binding
  • TD: Grouping Form Controls
  • TD: Handling Radio Buttons
  • TD: Setting and Patching Form Values
  • TD: Using Form Data
  • TD: Resetting Forms
  • Introduction to the Reactive Approach
  • Reactive: Setup
  • Reactive: Creating a Form in Code
  • Reactive: Syncing HTML and Form
  • Reactive: Submitting the Form
  • Reactive: Adding Validation
  • Reactive: Getting Access to Controls
  • Reactive: Grouping Controls
  • Reactive: Arrays of Form Controls (FormArray)
  • Reactive: Creating Custom Validators
  • Reactive: Using Error Codes
  • Reactive: Creating a Custom Async Validator
  • Reactive: Reacting to Status or Value Changes
  • Reactive: Setting and Patching Values
  • Assignment Solution

16. Course Project – Forms

  • Introduction
  • TD: Adding the Shopping List Form
  • Adding Validation to the Form
  • Allowing the Selection of Items in the List
  • Loading the Shopping List Items into the Form
  • Updating existing Items
  • Resetting the Form
  • Allowing the the User to Clear (Cancel) the Form
  • Allowing the Deletion of Shopping List Items
  • Creating the Template for the (Reactive) Recipe Edit Form
  • Creating the Form for Editing Recipes
  • Syncing HTML with the Form
  • Adding Ingredient Controls to a Form Array
  • Adding new Ingredient Controls
  • Validating User Input
  • Submitting the Recipe Edit Form
  • Adding a Delete and Clear (Cancel) Functionality
  • Redirecting the User (after Deleting a Recipe)
  • Adding an Image Preview
  • Providing the Recipe Service Correctly
  • Deleting Ingredients and Some Finishing Touches

17. Using Pipes to Transform Output

  • Introduction & Why Pipes are Useful
  • Using Pipes
  • Parametrizing Pipes
  • Where to learn more about Pipes
  • Chaining Multiple Pipes
  • Creating a Custom Pipe
  • Parametrizing a Custom Pipe
  • Example: Creating a Filter Pipe
  • Pure and Impure Pipes (or: How to "fix" the Filter Pipe)
  • Understanding the "async" Pipe

18. Making Http Requests

  • A New IDE
  • Module Introduction
  • How Does Angular Interact with Backends?
  • The Anatomy of a Http Request
  • Backend (Firebase) Setup
  • Sending a POST Request
  • Getting Data
  • Using RxJS Operators to Transform Response Data
  • Using Types with the HttpClient
  • Outputting Posts
  • Showing a Loading Indicator
  • Using a Service for Http Requests
  • Services & Components Working Together
  • Sending a DELETE Request
  • Handling Errors
  • Using Subjects for Error Handling
  • Using the catchError Operator
  • Error Handling & UX
  • Setting Headers
  • Adding Query Params
  • Observing Different Types of Responses
  • Changing the Response Body Type
  • Introducing Interceptors
  • Manipulating Request Objects
  • Response Interceptors
  • Multiple Interceptors
  • Wrap Up

19. Course Project – Http

  • Module Introduction
  • Backend (Firebase) Setup
  • Setting Up the DataStorage Service
  • Storing Recipes
  • Fetching Recipes
  • Transforming Response Data
  • Resolving Data Before Loading
  • Fixing a Bug with the Resolver

20. Authentication & Route Protection in Angular Apps

  • Module Introduction
  • How Authentication Works
  • Adding the Auth Page
  • Switching Between Auth Modes
  • Handling Form Input
  • Preparing the Backend
  • Preparing the Signup Request
  • Sending the Signup Request
  • Adding a Loading Spinner & Error Handling Logic
  • Improving Error Handling
  • Sending Login Requests
  • Login Error Handling
  • Creating & Storing the User Data
  • Reflecting the Auth State in the UI
  • Adding the Token to Outgoing Requests
  • Attaching the Token with an Interceptor
  • Adding Logout
  • Adding Auto-Login
  • Adding Auto-Logout
  • Adding an Auth Guard
  • Wrap Up

21. Dynamic Components

  • Module Introduction
  • Adding an Alert Modal Component
  • Understanding the Different Approaches
  • Using ngIf
  • Preparing Programmatic Creation
  • Creating a Component Programmatically
  • Understanding entryComponents
  • Data Binding & Event Binding
  • Wrap Up

22. Angular Modules & Optimizing Angular Apps

  • Module Introduction
  • What are Modules?
  • Analyzing the AppModule
  • Getting Started with Feature Modules
  • Splitting Modules Correctly
  • Adding Routes to Feature Modules
  • Component Declarations
  • The ShoppingList Feature Module
  • Understanding Shared Modules
  • Understanding the Core Module
  • Adding an Auth Feature Module
  • Understanding Lazy Loading
  • Implementing Lazy Loading
  • More Lazy Loading
  • Preloading Lazy-Loaded Code
  • Modules & Services
  • Loading Services Differently
  • Ahead-of-Time Compilation
  • Wrap Up

23. Deploying an Angular App

  • Module Introduction
  • Deployment Preparations and Important Steps
  • Using Environment Variables
  • Deployment Example: Firebase Hosting

24. Bonus: Working with NgRx in our Project

  • Module Introduction
  • What is Application State?
  • What is NgRx?
  • Getting Started with Reducers
  • Adding Logic to the Reducer
  • Understanding & Adding Actions
  • Setting Up the NgRx Store
  • Selecting State
  • Dispatching Actions
  • Multiple Actions
  • Preparing Update & Delete Actions
  • Updating & Deleting Ingredients
  • Expanding the State
  • Managing More State via NgRx
  • Removing Redundant Component State Management
  • First Summary & Clean Up
  • One Root State
  • Setting Up Auth Reducer & Actions
  • Dispatching Auth Actions
  • Auth Finished (For Now...)
  • And Important Note on Actions
  • Exploring NgRx Effects
  • Defining the First Effect
  • Effects & Error Handling
  • Login via NgRx Effects
  • Managing UI State in NgRx
  • Finishing the Login Effect
  • Preparing Other Auth Actions
  • Adding Signup
  • Further Auth Effects
  • Adding Auto-Login with NgRx
  • Adding Auto-Logout
  • Finishing the Auth Effects
  • Using the Store Devtools
  • The Router Store
  • Getting Started with NgRx for Recipes
  • Fetching Recipe Detail Data
  • Fetching Recipes & Using the Resolver
  • Fixing the Auth Redirect
  • Update, Delete and Add Recipes
  • Storing Recipes via Effects
  • Cleanup Work
  • Wrap Up

25. Bonus: Angular Universal

  • Module Introduction
  • Getting Started with Angular Universal
  • Working on the App Module
  • Adding a Server-Side Build Workflow
  • Adding a NodeJS Server
  • Pre-Rendering the App on the Server
  • Next Steps

26. Angular Animations

  • Introduction
  • Setting up the Starting Project
  • Animations Triggers and State
  • Switching between States
  • Transitions
  • Advanced Transitions
  • Transition Phases
  • The "void" State
  • Using Keyframes for Animations
  • Grouping Transitions
  • Using Animation Callbacks

27. Adding Offline Capabilities with Service Workers

  • Module Introduction
  • Adding Service Workers
  • Caching Assets for Offline Use
  • Caching Dynamic Assets & URLs

28. A Basic Introduction to Unit Testing in Angular Apps

  • Introduction
  • Why Unit Tests?
  • Analysing the Testing Setup (as created by the CLI)
  • Running Tests (with the CLI)
  • Adding a Component and some fitting Tests
  • Testing Dependencies: Components and Services
  • Simulating Async Tasks
  • Using "fakeAsync" and "tick"
  • Isolated vs Non-Isolated Tests

29. Angular Changes & New Features

  • What's New with Angular 8?
  • A First Look At Angular Elements

30. Course Roundup

Tags: Angular 8 Online Course