Angular
Workshop 4
Samuel Šramko

Čo už máme za sebou
- formuláre, komponenty, services a DI
- každá zo screenov by mala mať funkčnú komponentu
- formuláre by mali žiť a byť urobené reaktívne
- stav by sa mal predávať do zanorených komponent z hlavnej komponenty - AppComponent
Komponenty
- životný cyklus
- každý hook má svoj interface, ktorý je možné implementovať

Http
- modul @angular/common/http a HttpClientModule
- implementácia HTTP klienta - HttpClient
- vyriešené veci ako JSONP, automaticky počíta s JSON ako komunikačným formátom
- RxJS - knižnica od Microsoftu, Observable streams
- pre túto chvíľu jedine urobiť konverziu na Promise -> toPromise() a následne možnosť použiť async/await
Http
- každá REST entita by mala mať vlastnú Service
- HTTP operácie
- GET - získanie entity / kolekcie
- PUT - aktualizácia existujúcej entity
- POST - vytvorenie entity
- DELETE - odstránenie entity
- HttpClient má funkciu pre každú HTTP metódu
- http volanie vracia by default RxJS Observable
Routing
- veľká aplikácia - extrémne množstvo obrazoviek
- každá obrazovka by mala mať vlastnú URL
- bookmarks, SEO, ...
- @angular/router a RouterModule
- definovanie route
- kombinácia komponenty, URL adresy, časti view v ktorej sa má daná komponenta vykresliť a guards, ktoré sa majú vykonať
Routing
- je nutné mať správne nastavený <base href=""> tag, vačšinou /
- následne sa napíše definícia jednotlivých Route a predá sa do konfigurácie RouteModule.forRoot(), prípadne RouteModule.forChild()
- Route
- path - URL pre danú route, hierarchicky skomponovaná z parent Routes
- component - komponenta pre route
- data - statické dáta
- children - pole subroutes
- resolve - zoznam dát k získaniu pred načítaním route
- outlet - názov outletu, kde sa má route vykresliť
Guards
- každá Route môže implementovať funkcie, ktoré sa vykonajú v nejakom životnom cykle danej route
- canActivate - je možné zobraziť
- canDeactivate - je možné odísť
- canActivateChild - je možné zobraziť potomka
- canLoad - je možné načítanie potomka
- interface pre každý typ guard
- CanActivate, CanDeactivate, CanActivateChild, CanLoad
Resolve
- pri prechode na niektoré stránky je dobré získať dáta čo najskôr ako sa len dá
- tabuľky, formuláre s číselníkmi, ...
- Resolve
- interface s jedinou metódou resolve, ktorá vracia dáta
- Route sa neaktivuje, kým nie sú splnené všetky Resolve, ktoré má definované
Current vs. Snapshot
- Router aj Routes majú stav
- aktuálny stav celého routru je v RouterState
- aktuálna aktivovaná route je v ActivatedRoute
- počas vykonávania Resolve, prípadne Guards ale Route ešte nie je aktivovaná, sme v medzistave
- stav routru je zasnapshotovaný v RouterStateSnapshot
- route, ktorá má byť aktivovaná je v ActivatedRouteSnapshot
ActivatedRoute
- v komponnte je možné dostať sa k aktuálnej route cez konštruktor DI
- params - path parametre URL
- queryParams - query parametre URL
- data - zoznam dát - resolve a statické
- všetky vyššie uvedené sú Observable, použiť .subscribe(({model1:Model1, model2:Model2}) = > {...})
Navigácia
-
programová
- router.navigate(['/urlpath'])
- v šablóne pomocou routerLink direktívy
- možnosť predať parametre
ITA-04-JS Angular, Workshop 4
By IT-absolvent
ITA-04-JS Angular, Workshop 4
4. workshop Angular 2+
- 682