Chapter 1. Introducing Angular
1.1. Why select Angular for web development?
1.2. Why develop in TypeScript and not in JavaScript?
Chapter 2. The main artifacts of an Angular app
2.6. Understanding data binding
2.7. Hands-on: Getting started with ngAuction
2.7.1. The initial project setup for ngAuction
2.7.2. Generating components for ngAuction
3.3. The building blocks of client-side navigation
3.4. Navigating to routes with navigate()
3.7. Hands-on: Adding navigation to the online auction
4.1.1. Implementing the CanActivate guard
4.2. Developing an SPA with multiple router outlets
Chapter 5. Dependency injection in Angular
5.1. The dependency injection pattern
5.2. Benefits of DI in Angular apps
5.4. A simple app with Angular DI
5.5. Switching injectables made easy
5.6. Declaring providers with useFactory and useValue
5.7. Providers in lazy-loaded modules
5.8. Providers in eagerly loaded modules
5.9. Hands-on: Using Angular Material components in ngAuction
5.9.1. A brief overview of the Angular Material library
5.9.2. Adding the AM library to the project
5.9.3. Adding a feature module with AM components
5.9.4. Modifying the appearance of NavbarComponent
5.9.5. Modifying the SearchComponent UI
5.9.6. Replacing the carousel with an image
5.9.7. More fixes with spacing
Chapter 6. Reactive programming in Angular
6.1. Handling events without observables
6.2. Turning DOM events into observables
6.3. Handling observable events with the Forms API
6.4. Discarding results of unwanted HTTP requests with switchMap
Chapter 7. Laying out pages with Flex Layout
7.1. Flex Layout and ObservableMedia
7.2. Hands-on: Rewriting ngAuction
7.2.1. Why rewrite the ngAuction app from scratch?
7.2.2. Generating a new ngAuction app
7.2.3. Creating a custom Angular Material theme with Sass
7.2.4. Adding a toolbar to the top-level component
7.2.5. Creating the product service
Chapter 8. Implementing component communications
8.1. Intercomponent communication
8.2. Input and output properties
8.3. Implementing the Mediator design pattern
8.4. Exposing a child component’s API
8.5. Projecting templates at runtime with ngContent
Chapter 9. Change detection and component lifecycle
9.1. A high-level overview of change detection
9.3. Hands-on: Adding the product view to ngAuction
9.3.1. Creating product components and the module
9.3.2. Implementing the product component
Chapter 10. Introducing the Forms API
11.1. Using built-in validators
11.2. Controlling when validation starts
11.3. Custom validators in reactive forms
11.4. Validating a group of controls
11.5. Checking a form control’s status and validity
11.5.1. touched and untouched form controls
11.6. Changing validators dynamically in reactive forms
11.8. Custom validators in template-driven forms
11.9. Adding a search form to ngAuction
11.9.1. The search-form component
Chapter 12. Interacting with servers using HTTP
12.1. Overview of the HttpClient service
12.2. Reading a JSON file with HttpClient
12.3. Creating a web server with Node, Express, and TypeScript
12.4. Bringing Angular and Node together
12.4.1. Static assets on the server
12.4.2. Consuming JSON in Angular apps
12.4.3. Configuring the client proxy
12.4.4. Subscribing to observables with the async pipe
12.4.5. Injecting HttpClient into a service
12.4.6. Deploying Angular apps on the server with npm scripts
12.5. Posting data to the server
Chapter 13. Interacting with servers using the WebSocket protocol
13.1. Comparing HTTP and WebSockets
13.2. Pushing data from a Node server to a plain client
13.3. Using WebSockets in Angular clients
13.4. Hands-on: Node server with WebSockets support
13.4.1. Running ngAuction in dev mode
Chapter 14. Testing Angular applications
14.2. Running Jasmine scripts with Karma
14.3. Using the Angular testing library
14.4. End-to-end testing with Protractor
14.5. Hands-on: Adding an E2E test to ngAuction
Chapter 15. Maintaining app state with ngrx
15.1. From a convenience store to Redux architecture
15.1.2. Why storing app state in a single place is important
15.2.1. Getting familiar with a store, actions, and reducers
15.2.2. Getting familiar with effects and selectors
15.2.3. Refactoring the mediator app with ngrx
15.3.1. Comparing ngrx with Angular services
15.3.2. State mutation problems
15.4. Hands-on: Using ngrx in ngAuction
15.4.1. Adding the router state support to app module
A.1. How to run the code samples
A.2. Scope of variables and this
A.4. Optional parameters and default values
A.5. Arrow function expressions, this, and that
A.10. Iterating with forEach(), for-in, and for-of
B.2. Getting started with TypeScript
B.3. How to run the code samples
C. Using the npm package manager
D.1. Getting familiar with RxJS terminology
D.2. Observable, observer, and subscriber
D.4. Getting familiar with RxJS operators
3.15.151.21