TypeScript
- Modules
- Interfaces
- Class
- Functions
- Enum
- Static, Dynamic & Optional Types
- Inferred Types
- Builtin Types
- Custom Types
- Type Declaration
- Type Inference
- Defining Interfaces
- Creating Interface Methods
- Private and Public Scope
- Defining Members
- Static Functions
- Default and Optional Parameters
- Overloading functions
- Constructors
- Implementing Interfaces
- Inheritance and Polymorphism
Angular
- How Angular is opinionated
- Difference between Angular 1.0 Angular 2.0 and above (Optional)
- Module
- Component
- Template
- Metadata
- Data Binding
- Service
- Directive
- Dependency Injection
- Anatomy of an Angular Applications
- Assembling applications using Modules
- Identifying UI layers for Components
- Metadata for Components
- Jasmine Overview
- Writing Tests in Typescript
- Configure Karma to execute Tests
- Interpolation
- Expressions and Statements
- Bindings oValue Binding
- Property Binding
- Event Binding
- Two way Binding
- Component Life Cycle
- Testing Components
- Attribute Directives
- Structural Directives
- Using the Template Tag
- Using the "*" in directives
- Creating Components
- Extending Directives
- Creating Custom Directives
- Updating DOM Nodes
- Handling DOM Events
- Role of pipes in Angular 2 applications
- Using builtin pipes
- Chaining Pipes
- Creating Custom Pipes
- Testing Direvtives
- Configuring the Injector
- Importing & Exporting Components
- Importing & Exporting Services
- Registering Providers
- Class Providers and Value Providers
- Factory Providers
- Building forms using components and Templates
- Two way binding
- Change Tracking using ngControl
- Validation
- Error Handling
- Testing Angular Forms
- Including the Router
- Configuring the routes
- Router Outlets and Links
- Nested Routes
- Accessing Route Params
- Lazy loading of Modules and Components
- Communicating with Servers
- Using the http provider
- Async Programming Using Promises
- Resolving and Rejecting Promises
- Configuring the requests
- Sending Http Headers
- Caching Responses
- Request and Response Transformation
- Using RESTful Resources
- Using RxJS Objservables
- Streams as data source
- Difference between Iterators and Observables
- Using RxJs for observable manipulation
- Sequences
- Using sequence operators such as map(), filter(), concatAll(), reduce(), zip()
- Handling Errors
- Authentication & Authorization
- Authentication Using JWT
- Using Route Guards
- Can Activate
- Can Activate Child
- Can Deactivate
- Can Load
- JWT Http Interceptors
- Authorization Workflow
- Role-based Authorization
- Realtime Updates using WebSockets
- Need for bidirectional realtime communication
- WebSockets overview
- Using WebSockets in Angular
- Subscribing and Publishing websocket events using RxJs
- Using Webpack
- Module Bundling using Webpack
- Using Ahead Of Time compilation (AOT)
- Summary and Closing Remarks