Chapter
Chapter 1: Switching to the One Angular
Introducing the One Angular
From AngularJS to Angular
Chapter 2: Get Going with Angular
The evolution of the web – time for a new framework
The evolution of ECMAScript
Lessons learned from AngularJS in the wild
Chapter 3: The Building Blocks of an Angular Application
A conceptual overview of Angular
Getting to know Angular components
Bootstrapping an Angular application
Improving change detection
Classical change detection
Change detection in AngularJS
Enhancing AngularJS's change detection
Angular route definition syntax
Chapter 4: TypeScript Crash Course
Introduction to TypeScript
Compile-time type checking
Better support by text editors and IDEs
There's even more to TypeScript
Installing TypeScript with npm
Running our first TypeScript program
TypeScript syntaxes and features introduced by ES2015 and ES2016
Using the ES2015 and ES2016 classes
Defining variables with block scope
Meta-programming with ES2016 decorators
Using configurable decorators
Writing modular code with ES2015
Using the ES2015 module syntax
Taking advantage of the implicit asynchronous behavior of the module
Importing all the module exports
Taking advantage of static typing
Using explicit type declarations
Understanding the primitive types
Understanding the object types
Implementing multiple interfaces
Further expressiveness with TypeScript decorators
Writing generic code using type parameters
Having multiple type parameters
Writing less verbose code with the type inference of TypeScript
Contextual type inference
Introducing structural typing
Using ambient type definitions
Using predefined ambient type definitions
Custom ambient type definitions
Chapter 5: Getting Started with Angular Components and Directives
The "Hello world!" application in Angular
Setting up our environment
Installing the sample project repository
Using Angular and TypeScript
Improved semantics of the directives syntax
Declaring variables inside a template
Using syntax sugar in templates
Defining Angular directives
Setting the directive's inputs
Understanding the directive's constructor
Better encapsulation of directives with NgModules
Using NgModules for declaring reusable components
Using the custom element schema
Creating custom Angular components
Introducing the component's view encapsulation
Implementing the component's controllers
Determining the inputs and outputs
Defining the inputs and outputs
Passing inputs and consuming the outputs
Renaming the inputs and outputs
An alternative syntax to define inputs and outputs
Explaining Angular's content projection
Basic content projection in Angular
Projecting multiple content chunks
Using view children and content children
View child versus content child
Hooking into the component's life cycle
Order of execution of the life cycle hooks
Defining generic views with TemplateRef
Understanding and enhancing the change detection
The order of execution of the change detectors
Understanding Angular's change detection strategies
Introducing immutable data structures and OnPush
Using immutable data in Angular
Chapter 6: Dependency Injection in Angular
Why do I need dependency injection?
Dependency injection in Angular
Benefits of using dependency injection
Using the @Injectable decorator
Introducing forward references
Defining factories for instantiating services
Declaring optional dependencies
Understanding multiproviders
Child injectors and visibility
Instantiating an injector
Building a hierarchy of injectors
Using dependency injection with components and directives
Introducing the element injectors
Declaring providers for the element injectors
Exploring dependency injection with components
View providers versus providers
Using the @SkipSelf decorator
Chapter 7: Working with the Angular Router and Forms
Developing the "Coders repository" application
Exploring the Angular router
Using PathLocationStrategy
Using routerLink and router-outlet
Lazy-loading with loadChildren
Prefetching of the lazy-loaded routes
RouterModule.forRoot versus RouterModule.forChild
Using Angular's forms module
Developing template-driven forms
Digging into the markup of the template-driven form
Using the built-in validators
Defining custom validators
Using select inputs with Angular
Using the NgForm directive
Two-way data binding with Angular
Listing all the stored data
Chapter 8: Explaining Pipes and Communicating with RESTful Services
Developing model-driven forms in Angular
Using composition of control validators
Exploring the HTTP module of Angular
Using Angular's HTTP module
Defining parameterized views
Transforming data with pipes
Developing stateless pipes
Using Angular's built-in pipes
Developing stateful pipes
Using Angular's AsyncPipe
Using AsyncPipe with observables
Chapter 9: Tooling and Development Experience
Running an application in a web worker
Bootstrapping an application running in a web worker
Migrating an application to web workers
Making an application compatible with web workers
Initial load of a single-page application
Initial load of a single-page application with server-side rendering
Server-side rendering with Angular
Enhancing our development experience
Bootstrapping a project with angular-cli
Ahead-of-time compilation in Angular
How code generation works
Introducing the concept of ahead-of-time compilation
Constraints of the ahead-of-time compilation
How to use the ahead-of-time compilation of Angular