Útvonalválasztó mechanizmus
A routing segítségével navigálhatunk az alkalmazásban különböző oldalak között, az URL-ekhez rendelve specifikus komponenseket és funkcionalitásokat. Az angular hozzá rendeli a megfelelő komponens hierarchiát. A komponens megszerzi ajax kéréssel az adatokat szerver oldalról majd kirenderel valamilyen tartalmat.
A Routing tulajdonképpen egy tömb, amiben objektumelemek vannak.
A path és a komponensen túl megadhatunk guardokat (canActivate, canDeactivvate), resolvereket, egyéb adatokat.
const routes: Routes = [
{path: "", component: CimlapComponent},
{path: "albumok", component: AlbumListaComponent},
];
Angularban az útvonalak (routes) konfigurációjában többféle beállítást adhatunk meg, hogy meghatározzuk, hogyan működjenek az útvonalak és milyen komponenseket jelenítsenek meg. A leggyakrabban használt beállítások a következők:
- path: Egy string, amely meghatározza az URL részletét ehhez az útvonalhoz. Például:
'products'az/productsURL-hez kapcsolódik. - component: A komponens, amelyet meg kell jeleníteni, amikor az adott útvonal aktív.
- redirectTo: Egy másik útvonalra való átirányítás. Használható például az alapértelmezett útvonal beállításához.
- pathMatch: Hogyan hasonlítsa össze az útvonalat az URL-lel, ha a
redirectTobe van állítva. Az értékek lehetnek'full'vagy'prefix'. - children: Egy másik
Routestömb, amely almódosított útvonalakat tartalmaz. Ezzel létrehozhatunk beágyazott útvonalhierarchiákat. - loadChildren: Lazy loadinghoz használható. Megadja a modult, amelyet dinamikusan kell betölteni, amikor az útvonal aktív.
- data: Egy objektum, amely tetszőleges adatokat tartalmaz, amelyeket az útvonalhoz kapcsolódóan szeretnénk tárolni. Gyakran használják például az útvonal címének vagy jogosultságainak tárolására.
- resolve: Egy vagy több resolver definíciója, amelyek előre betöltenek adatokat az útvonalhoz kapcsolódó komponens számára.
- Guard: canActivate és canDeactivate: megadhatják, hogy egy adott útvonalra navigálhatunk-e vagy elhagyhatjuk-e azt.
- runGuardsAndResolvers: Megadja, hogy mikor futnak le a guard-ok és resolverek egy útvonalon. Értékei lehetnek:
'paramsChange','paramsOrQueryParamsChange','pathParamsChange','always', vagy'pathParamsOrQueryParamsChange'.
Ezen tulajdonságok bármely kombinációját használva finoman szabályozhatjuk az útvonalak működését és a navigációt az Angular alkalmazásunkban.
Router outlet
A router-outlet egy direktíva, amely a routing során az aktuális komponenst helyettesíti az alkalmazásban, a megfelelő modulhoz és URL-hez rendelve.
canActivate vs canLoad
A canActivate az útvonal megnyitásakor ellenőrzi, hogy a felhasználó hozzáférhet-e a komponenshez, míg a canLoad az útvonal betöltése előtt ellenőrzi, hogy a felhasználó hozzáférhet-e a modulhoz.