Chapter 1, Switching to the One Angular, makes an introduction of what Angular is. You'll learn that Angular and AngularJS are entirely different frameworks. After that, we'll go through the basics of the structure of the framework—having a core with a minimalistic and immutable API, and building on top of it with different modules in order to provide the best development experience possible. Finally, we'll see how Angular follows semantic versioning, which helps us understand why and when we should expect incompatible API changes in Angular.
Chapter 2, Get Going with Angular, teaches why we should use the latest version of the JavaScript language, why to take advantage of web workers, and how Angular takes advantage of all these powerful technologies. We will observe the current direction of frontend development and the lessons learned in the past few years. The chapter describes why AngularJS's architecture was changed in order to allow the development of SEO-friendly, high-performance, single-page applications.
Chapter 3, The Building Blocks of an Angular Application, gives a quick overview of the main building blocks provided by Angular for the development of SPAs. We'll point out the main differences with the core concepts from AngularJS.
Chapter 4, TypeScript Crash Course, introduces you to the TypeScript language that is used for the implementation of Angular. While exploring the language, we'll look at some of the core features of ES2015 and ES2016. We will explain the ES2015 and ES2016 classes, arrow functions, block scope variable definitions, destructuring, and modules. Since Angular takes advantage of the ES2016 decorators, and more accurately their extension in TypeScript, a section here speaks about them. After this, we'll take a look at how we can take advantage of static typing using explicit type definitions. We'll describe some of the built-in types in TypeScript and how we can define classes in the language by specifying access modifiers for their members. In the end, we'll explain what structural typing is and how TypeScript's type system takes advantage of it.
Chapter 5, Getting Started with Angular Components and Directives, takes us through the core building blocks of an Angular application: directives and components. We'll build a couple of sample components to show us the syntax to be used for the definition of these fundamental building blocks. You'll learn about the life cycle of each directive and the core set of features the given directive and component have. In the next step, we'll see how we can enhance the performance of our application using Angular's change detection strategies and immutable data structures.
Chapter 6, Dependency Injection in Angular, covers the dependency injection (DI) mechanism of Angular. We'll briefly discuss the positives of using DI in our projects by introducing it in the context of the framework. The second step in our journey is how to configure injectors using Angular modules; we'll also explain the injectors hierarchy and the visibility of the registered providers. In order to enforce a better separation of concerns, we'll take a look at how we can inject services carrying the business logic of our application in our directives and components.
Chapter 7, Working with the Angular Router and Forms, explains the basics of routing in Angular. We will take a look at how we can define different routes and implement the components associated with them that are displayed on route change. After that, we'll explain how to develop template-driven forms with built-in and custom validation. Finally, we'll explain how we can use two-way data-binding in Angular.
Chapter 8, Explaining Pipes and Communicating with RESTful Services, helps us take a deep dive into the Angular's forms module by developing a model-driven (reactive) form, combining it with the HTTP module. We'll take a look at some advanced features of the new component-based router and see how we can use and develop custom stateful and stateless pipes.
Chapter 9, Tooling and Development Experience, goes one step further, describing how to use web workers for performance-sensitive applications. Then, we'll learn to build SEO-friendly applications with server-side rendering. After that, we'll take a look at how to bootstrap a project as quickly as possible. Finally, we will learn what Ahead-of-Time (AOT) compilation is and how to use it.