Module Introduction
Components are Important!
Understanding the Role of AppModule and Component Declaration
Creating Components with the CLI & Nesting Components
Working with Component Styles
String Interpolation
Property Binding vs String Interpolation
Bindable Properties and Events
Two-Way-Databinding
Combining all Forms of Databinding
Using ngIf to Output Data Conditionally
Styling Elements Dynamically with ngStyle
Outputting Lists with ngFor
Module Introduction0
Property & Event Binding Overview
Assigning an Alias to Custom Properties
Assigning an Alias to Custom Events
Understanding View Encapsulation
Using Local References in Templates
Projecting Content into Components with ng-content
Seeing Lifecycle Hooks in Action
Getting Access to ng-content with @ContentChild
Module Introduction
ngClass and ngStyle Recap
Using the Renderer to build a Better Attribute Directive
Using HostListener to Listen to Host Events
Binding to Directive Properties
Building a Structural Directive
Module Introduction
Creating a Logging Service3
Creating a Data Service6
How many Instances of Service Should It Be?
Using Services for Cross-Component Communication
Module Introduction
Understanding the Example Project
Navigating with Router Links
Styling Active Router Links
Using Relative Paths in Programmatic Navigation
Fetching Route Parameters
An Important Note about Route Observables
Retrieving Query Parameters and Fragments
Setting up Child (Nested) Routes
Configuring the Handling of Query Parameters
Important: Redirection Path Matching
An Introduction to Guards
Protecting Child (Nested) Routes with canActivateChild
Controlling Navigation with canDeactivate
Resolving Dynamic Data with the resolve Guard
Module Introduction
Building & Using a First Simple Observable
Unsubscribe!
Using Subjects to Pass AND Listen to Data
Module Introduction
Template-Driven (TD) vs Reactive Approach
TD: Submitting and Using the Form
TD: Accessing the Form with @ViewChild
Built-in Validators & Using HTML5 Validation
TD: Outputting Validation Error Messages
TD: Using ngModel with Two-Way-Binding
TD: Handling Radio Buttons
TD: Using Form Data
Reactive: Setup
Reactive: Syncing HTML and Form
Reactive: Adding Validation
Reactive: Grouping Controls
Reactive: Creating Custom Validators
Reactive: Creating a Custom Async Validator
Reactive: Setting and Patching Values
Introduction & Why Pipes are Useful
Parametrizing Pipes
Chaining Multiple Pipes
Parametrizing a Custom Pipe
Pure and Impure Pipes (or: How to "fix" the Filter Pipe)
Introduction & How Http Requests Work in SPAs
Sending Requests (Example: POST Request)
Sending GET Requests
Transform Responses Easily with Observable Operators (map())
Catching Http Errors
Module Introduction
More about JWT
Setting up the Firebase SDK
Signin Users In
Sending the Token
Adding a Logout Button
Possible Improvements
Module Introduction
Example: Deploying to AWS S3
Introduction
Classes
Generics
Deep dive into TypeScrip