- Set up Hello World application with ng new my-app
- Demonstrate two-way binding
- Retrieve mock data using HttpClient
- Demonstrate parent-child and child-parent interactions
- Demonstrate content projection with ng-content
- Using a structural directive render content conditionally (if possible, use ng-template)
- Use ngIf and ngFor together, w/o adding more than one element to the DOM
- Create a directive that will give an element a random color everytime you load the page
- Example of dynamic routing
- Example of ngTemplateOutlet
- Reactive Forms example
- Example of ngSwitch
- Implement a custom pipe with PipeTransform
- Demonstrate a routing guard with CanActivate
- Demonstrate usage of rxjs operators pipe and map (ideally together)
- Create a typeahead input that uses the rxjs operators debounceTime and distinctUntilChanged
- Demonstrate a use case for the forkJoin rxjs operator
- Write several karma/jasmine test cases that pass
- Create a typeahead input that uses rxjs switchMap
- Demonstrate use of rxjs combineLatest
- Demonstrate using rxjs take, first, last
- Demonstrate using rxjs takeUntil
- Example of child (nested) routes
- rxjs error handling: catchError
- rxjs error handling: handle error within subscription
- Example of async/await (instead of then with Promise)
- Implement lazy loading for a feature module
- Example of ngrx to save state (ex: when navigating btw routes preserve a value in form)
- Set up mini node/express back-end and call API to retrieve data
- 3 ways to dynamically style in the template (ngStyle, ngClass, style.x)
- FormBuilder example
- set/get/delete cookie (ngx-cookie-service)
- ReplaySubject vs Subject (demonstrate difference)
- ViewChild (demonstrate static prop: true vs false) - Angular 9
- Async pipe use cases
- Nullish Coalescing - Angular 12
- Create components (using ViewContainerRef createComponent()) - Angular 13
- Non-Singleton service example
- ngOnInit vs ngAfterContentInit vs ngAfterViewInit (demonstrate timing differences)
- rxjs timer vs setInterval use case
- HttpInterceptor (intercept a request and inject an auth token)
- Pure vs Impure Pipe (demonstrate the differences including when making changes by reference or not)
Commits correspond to each exercises