Angular challenges
- @Component
 - Understanding Data binding
 - Directives
 - Practical Project(1)
 - Components and Data binding - Deep Dive
 - Directives(Attribute vs Structural)
 - Services & Dependency Injection
 - Angular Routing
- Defining a basic route
 - Getting route information
 - Setting up wildcard routes
 - Displaying a 404 page
 - Setting up redirects
 - Nesting routes
 - Setting the page title
 - Using relative paths
 - Accessing query parameters and fragments
 - Lazy loading
 - Preventing unauthorized access
 - Link parameters array
 - LocationStrategy and browser URL styles
 - Choosing a routing strategy
 - RouterLinkActive
 - RouterLink
 
 - RxJS
 - Forms
 - Pipes
 - Communicating with backend services using HTTP
- Setup for server communication
 - Requesting data from a server
 - Handling request errors
 - Sending data to a server
 - Configuring HTTP URL parameters
 - Intercepting requests and responses
 - Http interceptor use-cases
 - Tracking and showing request progress
 - Optimizing server interaction with debouncing
 - Security: XSRF protection
 - Testing HTTP requests
 - Passing metadata to interceptors
 
 - Dynamic component loader
 - NgModules
 - Hierarchical injectors
 - NgRx
 - Practical Project(2) - NgRx
 - Server-side rendering(SSR) with Angular Universal
 - Angular Universal using NestJS
 - Animations
 - Service Workers & PWA
 - Testing
 - Angular elements overview
 - Change detection & NgZone
 - Internationalization
 - Best practices
 - Angular tools
 - Tutorials
 - Reference
 - Component Styles
 - Dependency injection
 - Tempaltes
 - Angular Material
- Getting Started
 - Schematics
 - Theming Angular Material
 - Theme your own components
 - Customizing Typography
 - Customizing component styles
 - Custom form field control
 - Elevation helpers
 - Custom stepper using the CdkStepper
 - Testing with component harnesses
 - Duplicate theming styles
 - Migrating to MDC-based Components
 - Practice: Angular Material Theming System