Introduction
- Book Revision
- Book progress
- Code examples
- Feedback, Bug Reports and Suggestions
- Other publications
- Testimonials
Prerequisites
- Node
- Visual Studio Code
- Recommended extensions
- Hiding files
ES6
- Classes
- Inheritance
- Arrow Functions
- Expression Bodies
- Statement Bodies
- Lexical this
- Template Literals
- Extended Parameter Handling
- Default Parameter Values
- Rest Parameter
- Spread Operator
- Destructuring assignment
- Basic example
- Array destructuring
- Value assignment
- Default values
- Swapping values
- Skipping values
- Grouping tail values into a single variable
- Object destructuring
- Unpacking properties
- Renaming properties
- Default values
- Unpacking methods
- Renaming methods
- Using with function parameters
- IDE support
- Modules
- Exporting and Importing Values
- Default Values
- Wildcard Export
- See also
TypeScript
- Getting Started with TypeScript
- Installing TypeScript
- Using tsc
- Typings
- Linting
- tslint
- TypeScript Features
- Types
- Basic Types
- Arrays
- Enum
- Any
- Void
- Classes
- Properties
- Setters and Getters
- Methods
- Return values
- Method parameters
- Optional parameters
- Default parameters
- Rest Parameters and Spread Operator
- Constructors
- Inheritance
- Access Modifiers
- Public
- Private
- Protected
- Interfaces
- Abstract Classes
- Modules
- Module Loaders
- Running at server side
- Running in browser
- Source code
- Decorators
- Class Decorators
- Decorators with parameters
- Multiple decorators
- Method Decorators
- Accessor Decorators
- Property Decorators
- Parameter Decorators
Angular CLI
- Installing
- Your first application
- Running application
- Code Linting
- Unit tests
- Code coverage
- Development and Production builds
- Using blueprints
- Creating modules
- Assigning components to modules
- Routing support
- Generating standalone scripts
Components
- Creating a simple component
- Angular CLI
- Application module
- Source code
- Generating components with Angular CLI
- Angular CLI
- Component metadata
- Templates
- Inline templates
- Template literals
- External templates
- External files
- Styles
- Inline styles
- External styles
- External files
- Input properties
- Binding to expressions
- Avoid aliasing inputs and outputs
- Output events
- Raising events
- Handling events
- Typed events
- Accessing event parameters
- DOM events
- Aliased outputs
- Avoid aliasing inputs and outputs
- Providers
- Registering service
- Advanced feature
- Source code
- Host
- CSS class
- Host events
- Host attributes
- Host properties
- Source code
- Queries
- Source code
- Preparing the project
- @ViewChild
- @ViewChildren
- @ContentChild
- @ContentChildren
- Listening for View and Content changes
- Component Lifecycle
- Source code
- ngOnChanges
- ngOnInit
- ngModel
- ngDoCheck
- Performance Penalty
- ngAfterContentInit
- Content Projection
- ngAfterContentChecked
- Content Projection
- ngAfterViewInit
- ngAfterViewChecked
- ngOnDestroy
- Cleaning up subscriptions
- Subscription
- Content Projection
- ng-container directive
- Source Code and Demo
- Projecting single entity
- Supporting external content
- Projecting multiple entities
- Projecting with CSS selectors
- Projecting with Component selectors
- Fallback content
- Source Code and Demo
Dependency Injection
- Source code
- Preparing a project
- Services
- Creating LogService
- Injecting and using LogService
- Providers
- Using a class
- Using a class factory
- Class factories with dependencies
- Using @Inject decorator
- Using a value
- Using an alias
- Difference with the “useClass”
- Injection Tokens
- Type tokens
- String tokens
- Generic InjectionToken
- Injecting multiple instances
- Optional dependencies
- Manual injection with ReflectiveInjector
- Summary
Events
- Source code
- Component events
- Output Events
- Bubbling up child events
- DOM events
- Creating and triggering events
- Service events
- Source code
Directives
- Introduction
- Attribute Directives
- Handling host events
- Host members binding
- Binding element attributes
- Binding element properties
- Binding style attributes
- Binding class names
- Source code
- Built-in attribute directives
- NgStyle
- Source code
- NgClass
- Binding to String Expression (single):
- Binding to String Expression (space delimited)
- Binding to Object Literal
- Binding to Array
- Source code
- NgNonBindable
- Source code
- Structural Directives
- Built-in structural directives
- NgIf
- Source code
- NgFor
- Binding to arrays
- Binding to class properties or functions
- Using exported variables
- Improving performance with
trackBy - NgSwitch
- Creating a Structural Directive
- Modifying host element layout
- Source code
Walkthrough: Upload Directive
- DataTransfer
- CustomEvent
- Source code
Pipes
- Source code
- Introduction
- Pipes with Parameters
- Chaining Pipes
- Built-in Pipes
- UpperCase
- LowerCase
- TitleCase
- Date
- Custom formatting rules
- Internationalisation API
- Predefined formatting rules
- Decimal
- Minimum numbers
- Internationalisation API
- Currency
- Minimum numbers
- Internationalisation API
- Percent
- Minimum numbers
- Internationalisation API
- Json
- Slice
- Slice behaviour
- Using with Arrays
- Using with Strings
- I18nSelect
- Experimental
- I18nPlural
- Experimental
- Async
- Unsubscribing
- Using with NgFor directive
- Using with Date object
- Source code
- Custom Pipes
- Implementing Custom Pipe
- Converting Bytes
- Pure And Impure Pipes
- Preparing Project
- Pure Pipes
- Object reference checks
- Pipe name
- Impure Pipes
- Performance
Global Application Configuration
- Preparing the configuration file
- Configuration content
- Updating file content
- Creating the configuration service
- Loading server-side configuration file
- Registering configuration service
- Using configuration settings
- Source code
Internationalisation (i18n)
- Creating Translate Service
- Loading server-side files
- Creating Translate Pipe
- Using Translate Pipe
- Switching languages
- Summary
- Source code
Advanced Angular
- Dynamic Content in Angular
- List item templates
- List component
- Row templates
- Typical use cases
- Source code
- Dynamic Components
- Runtime context
- Typical use cases
- Source code
- Runtime Compilation
- Binding events
- Typical use cases
- Source code
- Plugins
- Preparing new project
- Source code
- Building components based on string names
- Loading configuration from external sources
- Optimisation
- Source code
- Dynamically changing application routes
- Source code
- External plugins
- Extension decorator
- Creating a Plugins Core library
- Rollup.js
- Source code
- Creating an example Plugin library
- TypeScript Configuration
- Source code
- Extra libraries and dependencies
- Providing dependencies for your plugins
- Loading plugins into the Application
- SystemJS
- Dynamic modules and NgModule decorator
- Setting plugin properties at runtime
- Dynamic Routes with plugin content
- Summary
- Source code
Reusable Component Libraries
- Creating new application
- Creating component libraries
- Building the packages
- Publishing to NPM
- Package scope
- Integrating with the application
- See also
- Source code
Using with Docker
- Additional Resources
- Preparing new project
- Creating Dockerfile
- Deployment
- Testing in a container
- Creating docker-compose.yml
- Publishing to Docker Hub
- Consuming from Docker Hub
- Automating with Travis
- See also
- Source code
Webpack
- Initial project structure
- Source code
- Typescript configuration
- Basic webpack setup
- Enabling source maps
- Simple Angular application
- Generating index page
- Development server
- Start command with NPM
- Fixing Angular warnings
- Testing source maps
- Advanced webpack setup
- External Html templates
- External CSS styles
- Loading images
- TSLint
- Unit testing
- Code coverage
- Source code
- Code splitting
- Multiple configurations
- Development mode
- Production mode
- CSS splitting
- Vendor code splitting
Building a Mobile App with Cordova and Angular
- Installing command-line tools
- Angular CLI
- Generating a new Cordova App
- Adding the Browser platform
- Adding the iOS platform
- Generating a new Angular App
- Build scripts
- Running Angular in the Browser
- Running Angular in the iOS emulator
- Routing support
- Routing in the iOS emulator
- Summary
Changelog
- Revision 16 (2018-10-23)
- Revision 15 (2018-06-03)
- Revision 14 (2018-04-08)
- Revision 13 (2018-02-12)
- Revision 12 (2017-12-17)
- Revision 11 (2017-12-03)
- Revision 10 (2017-11-12)
- Revision 9 (2017-10-15)
- Revision 8 (2017-09-17)
- Revision 7 (2017-09-14)
- Revision 6 (2017-08-24)
- Revision 5 (2017-08-13)
- Revision 4 (2017-07-22)
- Revision 3 (2017-07-09)
- Revision 2 (2017-07-02)
- Revision 1 (2017-06-09)