Laboratorium 4: Routing

Podobne dokumenty
Laboratorium 2: Portfolio zdjęciowe, p.1

Laboratorium 2: Portfolio zdjęciowe, p.1

Framework Angular4. Alicja Frankowicz Weronika Węglińska

Laboratorium 2: Portfolio zdjęciowe, p.2

Edytor Edit+ - dodawanie zdjęć i. załączników. Instrukcja użytkownika

Laboratorium 7 Blog: dodawanie i edycja wpisów

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

O sobie. Adam Kowalski. Absolwent informatyki Uniwersytetu Wrocławskiego Full-stack Developer w firmie Synergy Codes.

INSTRUKCJA OBSŁUGI SYSTEM ZARZĄDZANIA TREŚCIĄ

ANGULAR 2+ Waldemar Korłub. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska

AUDYT DOSTĘPNOŚCI STRONY INTERNETOWEJ

ANGULAR 2+ Waldemar Korłub. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska

5.4. Tworzymy formularze

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

Kurs obsługi CMS. 1. Dodawanie kolejnych podstron 2. Obsługa wielojęzycznej witryny

Instrukcja obsługi systemu Sky CMS

Tworzenie Stron Internetowych. odcinek 9

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek


Podstawy technologii WWW

Nowy szablon stron pracowników ZUT

INSTRUKCJA dla opiekunów SKC

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Spis treści. Warto zapamiętać...2. Podstawy...3

CMS- kontakty (mapa)

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

PORADNIK JOOMLA! - nigdy nie klikamy w przeglądarce Cofnij/Back. Opuszczamy zakładkę w Joomla! klikając Zapisz lub Zamknij.

Backend Administratora

Platforma e-learningowa

Jeśli chodzi o wymianę/dodanie zdjęcia w galerii to robimy to za pomocą komponentu Galeria Phoca.

DOKUMENTY I GRAFIKI. Zarządzanie zawartością Tworzenie folderu Dodawanie dokumentu / grafiki Wersje plików... 7

Instalacja systemu zarządzania treścią (CMS): Joomla

Instrukcja użytkownika BIP

STOPKA. Redakcja strony Stopka Linki w stopce Link do nowej podstrony Link do strony zewnętrznej... 6

miniinstrukcja miniswl

Dodawanie treści na stronę projektu z Poddziałania 3.1.2

Instrukcja dodawania obiektów do strony Ekonomika.

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

Podstawy technologii WWW

Instrukcja obsługi systemu zarządzania treścią w MDK

Maple i wykresy. 1.1 Najpierw należy się zalogować. Jak to zrobić zostało opisane w moim poprzednim tutorialu.

Przewodnik użytkownika (instrukcja) AutoMagicTest

Tworzenie prezentacji w MS PowerPoint

E-szkolenia. Instrukcja. użytkownika&administratora. Bądź Paperless, nie drukuj tego dokumentu.

Uruchamianie bazy PostgreSQL

pl/administrator

Ćwiczenie 4: Edycja obiektów

Podręcznik korzystania z platformy szkoleniowej i szkoleń elearningowych BDOT10k

ADMINISTRACJA STRONĄ EMPIRE MUSIC

autor poradnika - KS Jak zamieszczać i edytować artykuły na szkolnej stronie internetowej

Podstawy technologii WWW

Tworzenie menu i authoring w programie DVDStyler

e-podręcznik dla seniora... i nie tylko.

Poradnik dla redaktorów

Laboratorium 1: Szablon strony w HTML5

STRONY DEALERSKIE W SYSTEMIE K2

Dokumentacja serwisu internetowego Zespołu Szkół Technicznych w Radomiu.

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

INSTRUKCJE WIKAMP Dotyczy wersji systemu z dnia

PRACA Z SZABLONAMI. Artykuł Komunikaty Wydarzenie Reportaż foto Baner Boksy Zobacz również...

Pomoc. BIP strona portalu

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH

Pokaz slajdów na stronie internetowej

Własna strona WWW w oparciu o CMS

cms S INSTRUKCJA OBSŁUGI System cms S, którego dotyczy ta instrukcja, można zobaczyć, wypróbować i kupić na stronie:

Umowy Instrukcja użytkownika systemu GW-MAX

Al. Akacjowa 16A Wrocław

UMIESZCZANIE WIADOMOŚCI NA SZKOLNEJ STRONIE INTERNETOWEJ

Oracle Application Express

Wykład 03 JavaScript. Michał Drabik

Poradnik korzystania z Bazy konkurencyjności dla niezalogowanego użytkownika systemu

SystimPlus. Dokumentacja (FAQ) dla wersji: v

2.5 Dzielenie się wiedzą

Spis treści. 1. Wstęp. 2. Zarządzanie podstronami. 2.1 Lista podstron 2.2 Edycja podstrony 2.3 Dodawanie podstrony

Instrukcja portalu TuTej24.pl

Laboratorium A: Zarządzanie ustawieniami zabezpieczeń/klucz do odpowiedzi

Poradnik obsługi systemu zarządzania treścią (CMS) Concrete5. Informacje podstawowe

Odsyłacze (inaczej: hiperłącza, łącza hipertekstowe, odnośniki, linki) Najbardziej charakterystycznym elementem dokumentów w światowej sieci World

Dodatki. Dodatek A Octave. Język maszyn

CMS - INFORMACJE. *** Mirosław Kuduk E mail: tel. kom DODATKOWE FUNKCJE - PANEL ADMINISTRATORA

Miejskie Wodociągi i Oczyszczalnia sp. z o.o. w Grudziądzu. ibok. Internetowe Biuro Obsługi Klienta. Instrukcja obsługi

Startowym językiem po zalogowaniu jest język polski! Zmiana języka

INSTRUKCJA OBSŁUGI PROGRAMU FOTOLASER

Laboratorium 8 ( Android -pierwsza aplikacja)

Moduł 1 Pliki i foldery

MODUŁ INTEGRUJĄCY ELEKTRONICZNEGO NADAWCĘ Z WF-MAG SPIS TREŚCI

Instrukcja obsługi uczelnianego cmsa

6. Wciśnij Shift+F12 lub wybierz odpowiednią ikonę z paska narzędziowego (patrz wcześniejsze odcinki). 7. [rys.1] Klub IKS

Użytkowniku programu FINKA, przekazujemy E-book, który omawia najważniejsze kwestie dotyczące generowania i wysyłania JPK.

,Aplikacja Okazje SMS

REFERAT O PRACY DYPLOMOWEJ

Instrukcja InPro BMS Siemens FC700A InPro Professional 4.1

BACKUP BAZ DANYCH FIREBIRD

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

INSTRUKCJA OBSŁUGI BIULETYNU INFORMACJI PUBLICZNEJ

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Program powinien otworzyć się z pierwszym formularzem. Jeśli nie, otwórz pierwszy formularz, wybierając go z listy - Shift+F12.

DOKUMENTACJA CMS/Framework BF5.0

Zapytania i wstawianie etykiet z bazy danych do rysunku

epuap Archiwizacja w Osobistym Składzie Dokumentów

Transkrypt:

Laboratorium 4: Routing Ćwiczenie 1. Przygotowanie routingu Czas na coś bardziej skomplikowanego. Strona główna naszej galerii gotowa, pora dodać coś bardziej złożonego. Każdy nasz album zdjęciowy powinien dawać możliwość przejrzenia w nim zdjęć, prawda? Czyli klikamy na okładkę galerii i przechodzimy głębiej. Zajmiemy się tym teraz. Czym jest routing? To nic innego jak ścieżki, po których można poruszać się w aplikacji. Na stronie www będzie to mapa ścieżek do poszczególnych podstron. W aplikacjach typu SinglePage routing nieco się różni, ponieważ nie przenosi nas między podstronami, ale doładowuje nowe widoki do głównej strony w zależności od parametrów, które mu podamy. Tak więc cały czas operujemy na index.html, jedynie jego zawartość zmienia się dynamicznie, bez przeładowywania strony. 1. Utwórzmy więc oddzielny moduł do obsługi ścieżek. Angular zrobi to za nas: ng generate module app-routing --flat --module=app Przyjrzyjmy się tej komendzie. --flat - moduł app-routing zostanie utworzony w głównym katalogu aplikacji --module=app doda moduł do tabeli imports w app-modul Jak widać poniżej, AppRoutingModule został dodany pod naszymi własnymi komponentami. Przenieśmy go wyżej, do sekcji z modułami, jako że to jedna z najważniejszych części naszej aplikacji.

2. Zajrzyjmy do modułu routingu. Ponieważ będziemy korzystać z dodatkowego modułu RouterModule, więc musimy go dodać zrobimy to analogicznie do imports ale jako exports: 3. Trzeba pomyśleć o ścieżkach. My będziemy mieć dwie ścieżki. Domyślną, pustą, opartą o adres localhost:4200, która powinna uruchamiać dashboard.component.ts i ścieżkę do naszych galerii, do których będziemy przechodzić po kliknięciu odnośnika na górze strony: localhost:4200/galleries

Wynika z tego, że będziemy korzystać z komponentu galleries.component.ts oraz dashboard.component.ts, którego jeszcze nie mamy. Utwórzmy go: ng generate component components/dashboard/dashboard 4. Typowa ścieżka posiada dwa parametry: path: odpowiada adresowi URL w przeglądarce component: component, który zostanie wywołany przez router pod podanym adresem. My będziemy mieć tablicę ścieżek. Dodajmy ją nad @NgModule const routes: Routes = [{ path: 'galleries', component: GalleriesComponent path: 'dashboard', component: DashboardComponent }]; 5. No dobrze, a co jak nic nie kliniemy? Domyślnie powinien pojawić się dashboard. Wystarczy na końcu dodać ścieżkę domyślną - jeśli path jest pusta, to przekieruj na dashboard. const routes: Routes = [{ path: 'galleries', component: GalleriesComponent path: 'dashboard', component: DashboardComponent path: '', redirectto: '/dashboard', pathmatch: 'full' }]; 6. Mamy ścieżki, teraz musimy uruchomić router, żeby nasłuchiwał, czy w nie klikamy. W tym celu dodajemy router w @NgModule: imports: [ CommonModule, RouterModule.forRoot(routes) ], 7. Router przygotowany, ale nie mamy jeszcze nawigacji, żeby go przetestować. Przejdźmy do nav.component.html i dodajmy ścieżki do naszego menu u góry.

routerlinkactive doda dam klasę is-active do odnośnika, jeśli ścieżka będzie się zgadzała. Dzięki temu możemy podświetlić link od aktywnej podstrony, np. tak.

8. Jeśli teraz klikniesz na linki u góry, nic się nie wydarzy. To dlatego, że nasz router nie wie, gdzie ma wstawiać komponenty, które mu podaliśmy w ścieżce. Trzeba mu to miejsce wyznaczyć. Przejdźmy do app.component.html i nad komponentem z galeriami <appgalleries></app-galleries> dodajmy <router-outlet></router-outlet> <app-nav></app-nav> <div class="container"> <router-outlet></router-outlet> <app-galleries></app-galleries> </div> Kliknij odnośniki i sprawdź, co się dzieje. Możesz już stąd usunąć <appgalleries></app-galleries> Ćwiczenie 2. Podstrona galerii Czas na coś bardziej skomplikowanego. Każdy nasz album zdjęciowy powinien dawać możliwość przejrzenia w nim zdjęć, prawda? Czyli klikamy na okładkę galerii i przechodzimy głębiej. Jak to zrobić? Pomocny znów będzie router. Router daje nam możliwość nie tylko dodania czystej ścieżki, ale też zdefiniowania parametrów, z którymi będzie wywoływana. Co to oznacza? Że nie tylko możemy wywołać ścieżkę localhost:4200/gallery, ale też możemy określić, o którą galerię w niej chodzi. 1. Utwórzmy zupełnie nowy komponent gallery, który będzie odpowiadał za wyświetlanie pojedynczej galerii: ng generate component components/galleries/gallery 2. W app-routing.module.ts w tablicy ze ścieżkami dodajmy nową ścieżkę, zawierająca parametr id galerii, którą chcemy otworzyć. const routes: Routes = [{ path: 'galleries', component: GalleriesComponent path: 'galleries/:galleryid', component: GalleryComponent path: 'dashboard', component: DashboardComponent path: '', redirectto: '/dashboard', pathmatch: 'full' }];

3. W routingu to wszystko. Teraz trzeba sprawić, żeby po kliknięciu w zdjęcie galerii, został wywołany właściwy adres. Przechodzimy do pliku gallery-item.component.html i zamykamy zdjęcie w znaczniku <a> z nową ścieżką: <a routerlink="/galleries/{{gallery.galleryid}}" class="thumbcontainer"> <img src="{{gallery.thumburl}}"> </a> 4. Spróbujmy kliknąć w adresie widać parameter i gallery.component works! Nie widać jedynie danych z galerii. Co musimy teraz zrobić, żeby wyświetlić te dane? Pobrać z adresu galleryid Wyciągnąć dane galerii z tablicy z galeriami Wyświetlić je na stronie 5. Zacznijmy od wyciagnięcia parametru z adresu. Potrzebujemy do tego ActivatedRoute. W pliku gallery.component.ts w konstruktorze wpisujemy : constructor(private route: ActivatedRoute) { } 6. Następnie definiujemy galleryid i w ngoninit() nadajemy jej wartość wyciągniętą z routera:

7. Skoro mamy galleryid możemy wyciągnąć z tablicy z galeriami wszystkie dane galerii! Pod zmienną galleryid dodajemy kolejną zmienną gallery: IGallery. Następnie w ngoninit() dopisujemy linię: this.gallery = Galleries.find((item: IGallery) => item.galleryid === this.galleryid); Co zrobiliśmy ostatnią linią? Przeszukaliśmy Galleries w poszukaliśmy obiektu, który miał takie samo galleryid jak to pozyskane z parametru z odnośnika. Metoda.find to skrócona metoda działająca jak pętla for przeszukuje wszystkie elementy tablicy (u nas item typu IGallery) i sprawdza, który z tych elementów spełnia zadany warunek u nas porównanie dwóch wartości galleryid. 8. Dopisz jeszcze wyświetlanie galerii w konsoli przegladarki isprawdź jak to działa. console.log(this.gallery); Pamiętaj o zaimportowaniu interfejsu i pliku z galerami! Jeśli podczas wpisywania nie dodały się same na górze pliku, kliknij na nazwie a następnie wciśnij ALT + ENTER. 9. Ostatnia rzecz to wyświetlenie informacji o galerii na stronie. Nic trudnego przejdź do pliku gallery.component.html i wpisz tam: <h2>galeria: {{gallery.title}} <br><small>galleryid: {{gallery.galleryid}}</small> </h2> Ćwiczenie 3. Rozbudowa galerii Nasza galeria nie ma w sobie wielu informacji. Rozbudujemy ją nieco. 1. W katalogu interfaces utwórz plik iphoto.ts. 2. W pliku iphoto.ts tworzymy nowy interface IPhoto nasze zdjęcia będą miały trzy pola:

3. W pliku igallery.ts podmieniamy photos na tablicę z obiektami typu IPhoto: Znak zapytania w tags oznacza, że jest to pole opcjonalne i nie musi występować. Ponieważ tablica ze zdjęciami korzysta z typu danych IPhoto, zadeklarujemy to tutaj. [] oznaczają, że będzie to tablica obiektów tego typu. 4. W pliku galleries.constant.ts dodajemy tagi i zdjęcia. Zrób to dla dwóch pierwszych galerii, do reszty dodaj tylko tags: [], photos: [] uzupełnisz to kiedy indziej.

Ćwiczenie 4. Samodzielne 1. Uzupełnij dane reszty galerii i dodaj zdjęcia (minimum 4 na galerię). 2. Uzupełnij stronę poszczególnych galerii. Powinna zawierać:

Tytuł galerii Datę galerii w takim samym formacie jak na stronie z galeriami Tagi Jedno duże zdjęcie (pierwsze) Miniaturki pozostałych zdjęć Strona powinna wyglądać mniej więcej tak: Zagadnienia na wejściówkę: 1. Czym jest routing? 2. Czym się różni metoda.find od.findindex oraz.indexof? 3. Na czym polega zasięg zmiennych i hoisting w JS? 4. Czym się różni display: block od display: inline-block w CSS?