These are practice exercises for Pluralsight’s Angular Fundamentals course. They are also great stand-alone exercises and you can refer to the course for a little training for each of them.
The exercises below are broken up into sections by course module and contain links to the clip in the course that discusses that topic, a link to the practice exercise on Plunker, and a link to the finished example for each exercise. Try to finish each exercise before looking at the finished example.

Creating and Communicating Between Components

Clip Practice Exercise Finished Example
and
Creating a Data-bound Component Finished
Communicating with Child Components Finished
Communicating with Parent Components Finished
Using Template Variables To Interact with Child Components Finished
Styling Components Finished

Exploring the New Template Syntax

Clip Practice Exercise Finished Example
Repeating Data with ngFor Finished
Using the Safe-Navigation Operator Finished
Hiding Elements with ngIf Finished
Hiding Elements with [Hidden] Finished
Hiding and Showing Elements with ngSwitch Finished
Adding Style with ngClass Finished
Adding Style with ngStyle Finished

Creating Reusable Services

Clip Practice Exercise Finished Example
Creating and Injecting Services Finished

Routing and Navigating Pages

Clip Practice Exercise Finished Example
Creating a Route Finished
Using Route Parameters Finished
Linking to Routes Finished
Navigating from Code Finished
Preventing a Route from Activating Finished
Preventing a Route from De-Activating Finished
Pre-Loading Data for a Component Finished

Collecting Data with Forms and Validation

Clip Practice Exercise Finished Example
Creating a Template-based Form Finished
Validating a Template-based Form Finished
Creating a Reactive Form Finished
and
Validating a Reactive Form Finished
Creating Custom Validators Creating a Custom Validator Finished

Reusing Components with Content Projection

Clip Practice Exercise Finished Example
Creating a Component with Content Projection Finished
Creating a Component with Multiple Slot Content Projection Finished

Manipulating Data With Pipes

Clip Practice Exercise Finished Example
Using the Lowercase Pipe Finished
Using the Date Pipe with Parameters Finished
Creating a Custom Pipe Finished
Using the ngOnChanges Lifecycle Hook Finished
Filtering Data Finished
Sorting Data Finished

Understanding Dependency Injection

Clip Practice Exercise Finished Example
Use Injection Token & @Inject() Finished
Use the useExisting provider Finished

Creating Directives and Advanced Components

Clip Practice Exercise Finished Example
Create a Directive Finished
Listen to Route Parameter Changes of a Parameterized Page Finished
Using @viewChild Finished

Communicating with the Server using HTTP, Observables, and Rx

Clip Practice Exercise Finished Example
Turning an Observable into a Promise Finished
Making an HTTP Get Request Finished
Massaging Requested Data with Map Finished
Using Querystring Parameters Finished

Unit Testing Your Code

Clip Practice Exercise Finished Example
Write a Basic Test Finished
Test a Service Finished
Use a Jasmine Spy Object Finished
Mock a Http Call Finished
Use toHaveBeenCalledWith Finished

Testing Components with Integrated Tests

Clip Practice Exercise Finished Example
Test a Component with an Integrated Test Finished