Importujemy trzy moduły:
MatInputModule - Datepicker korzysta z pola tekstowego dlatego ten moduł jest nam potrzebny.
MatDatepickerModule - Moduł obsługujący kontrolkę
MatNativeDateModule - W przypadku kontrolki Datepicker musimy dodatkowo zaimportować jeden moduł. Służy on do obsługi daty. Możemy wybrać inny jak na przykład: MatMomentDateModule
Do zbudowania Datpickera korzystamy z czterech elementów:
Z etykiety - to jest opcjonalne
Z pola tekstowego, w którym będzie wyświetlana data. Przypisujemy do niego identyfikator, którym będziemy się później posługiwać. Ta linijka kodu jest wymagana.
mat-datepicker-toggle to ikonka po wciśnięciu której wyświetli popup z kalendarzem umożliwiający użytkownikowi wybór daty. Dyrektywa: matSuffix sprawi, że ikonka zostanie wyświetlona po prawej stronie. Jeśli chcemy wyświetlić ją po lewej stronie wystaczy ustawić: matPrefix. Ta linijka jest opcjonalna.
I na koniec mat-datpicker to nasz Datepicker przypisujemy do niego unikalny ID wcześniej przez nas zdefiniowany. To oczywiście jest wymagane do działania Datepickera.
Ustawienie formatu daty
Kiedy uruchomisz ten przykład po wyborze daty zauważ, że data jest zapisana w formacie: Miesiąc/Dzień/Rok. Taki format obowiązuje w USA. Załóżmy, że chcemy wyświetlać datę w formacie Dzień.Miesiąc.Rok. Możemy to zrobić globalnie.
Otwórz plik, w którym importujesz moduły z Angular Material i dodaj:
Każdy, który chodź trochę programował we frontend prędzej czy później spotkał się z plikiem package.json. Zawiera on różnego rodzaju zależności, które są wykorzystywane w tworzonym projekcie. Często w tym pliku znajdują się także skrypty, które na przykład uruchamiają projekt lub testy. Spójrzmy na poniższy przykład:
Powyższy fragment pochodzi z pliku package.json wygenerowanego przez Angulara. Pod scripts znajduje się lista kilku zadań/skryptów gotowych do uruchomienia za pomocą składni:
npm run nazwa-skryptu
npm run start
npm run build
Akurat w tym przypadku skrypty składają się z maksymalnie dwóch komend jak: ng serve. Takie przechowywanie skryptów jest szczególnie przydatne gdy polecenia są dość długie i zawiłe.
Więc skrypty pozwalają nam na usprawnienie pracy. Webstorm udostępnia funkcjonalność która pozwala na jeszcze wygodniejszą obsługę takich skryptów.
Konfiguracja w Webstorm
Samo wklepywanie w terminal poleceń nie wydaje się czymś trudnym. Z drugiej strony wyobraź sobie przypadek kiedy potrzebujesz się przełączać między różnymi skryptami. Za każdym razem musisz wklepywać npm run .... A nie lepiej użyć skrótu klawiszowego i w jeszcze szybszy sposób przełączać się między zadaniami? Ja wybieram tą drugą opcję.
Żeby skonfigurować skrypt przejdźmy do pliku package.json. Zauważ, że przy każdym skrypcie wyświetla się zielona strzałka:
Jeśli w nią klikniemy wyświetli się popup:
Mamy kilka opcji: możemy uruchomić skrypt. Włączyć go w trybie debugowania lub stworzyć dla niego konfigurację: Modify [script name] Configuration....
Ten popup możemy także wyświetlić za pomocą skrótu klawiszowego: Alt + Enter. Jeśli chcemy dany skrypt uruchomić bezpośrednio wystarczy kliknąć: Ctrl + Shift + F10. Te dwa skróty działają tylko gdy jesteś w pliku package.json.
My chcemy stworzyć konfigurację, która sprawi, że będziemy mogli uruchomić skrypt z dowolnego miejsca w projekcie. Wybieramy opcję: Modify [script name] Configuration...:
Nadajemy nazwę i zatwierdzamy. Mamy skonfigurowany nasz skrypt!
Obsługa skryptów
Po dodaniu skryptu zostanie on wyświetlony u góry w liście skryptów:
Skrót klawiszowy: Shift + F10 spowoduje uruchomienie skryptu, który wyświetla się w tej liście. Inaczej mówiąc bieżący skrypt.
Jeśli chcemy uruchomić inny skrypt niż bieżący najpierw klikamy skrót klawiszowy: Ctrl + Alt + F10:
Wybieramy skrypt do uruchomienia.
Żeby zatrzymać aktualnie uruchomiony skrypt klikamy: Ctrl + F2
NVM to skrót od: Node Version Manager. Jest to narzędzie, które ułatwi Ci życie w pracy związanej z NodeJS. Wyobraź sobie, że masz kilka aplikacji, które korzystają z różnych wersji NodeJS. Wystarczy jedna komenda i możesz szybko przełączyć się na daną wersję. Jeśli pracujesz z NodeJS i nie znasz tego narzędzie zachęcam do zapoznania się z nim.
Instalacja
NVM możesz zainstalować na takich systemach jak: Linux, MacOS, Windows. Poniżej pokazuję proces instalacji na Linuxie:
Czasami zdarza się że po instalacji i użyciu komendy nvm terminal informuje nas, że nie może znaleźć takiego polecenia. Zwykle pomaga zamknięcie terminalu i otwarcie go na nowo. Ale i jeśli to nie pomoże to dodatkowo wywołaj:
source ~/.profile
Przydatne komendy
Poniżej przedstawiam listę komend do codziennej pracy z NVM:
Obserwując rozwój aplikacji internetowych można dojść do wniosku, że z biegiem czasu możemy tworzyć coraz bardziej złożone funkcjonalności z mniejszym nakładem pracy. Dzieje się tak dlatego, bo używamy często narzędzi, które ktoś za nas napisał. Można to porównać do budowy domu z klocków. Pozwala to oczywiście na oszczędność czasu i skupieniu się na naszym celu. Angular Material to biblioteka, która pomoże Ci w łatwiejszym budowaniu interfejsu użytkownika.
Używając Material masz na start gotowe komponenty: jak kontrolki do formularzy, przyciski, popupy i wiele więcej.
Instalacja
Zanim zaczniemy instalację zakładam, że masz już postawioną aplikację Angular.
Żeby zacząć używać bibliotekę musimy ją zainstalować. Wejdź do katalogu swojej aplikacji i wywołaj komendę:
ng add @angular/material
Zacznie się proces instalacji. Będziesz pytany przez instalator o: wybranie motywu graficznego, czy ustawić globalnie style odnośnie czcionki(wybierz 'n' to Cię raczej teraz nie interesuje), czy ma być dodana obsługa efektów animacji(zalecam 'y'). To tyle jeśli chcesz poznać więcej szczegółów znajdziesz je pod tym: linkiem.
Pierwsze użycie
Stwórzmy plik o nazwie: material.module.ts o takiej zawartości:
mat-form-field - to kontener, w którym przechowujemy kontrolkę z biblioteki Material. To pole jest wymagane.
mat-label - Zwykła etykieta. Dodatkowo: w tym przypadku jeśli pole tekstowe nie ma fokusa, to wartość podana w tym tagu jest wyświetlana w kontrolce jako placeholder. Opcjonalne.
matInput - To dyrektywa która informuje, że chcemy skorzystać z modułu: MatInputModule. Tej dyrektywy możemy także użyć dla tagu textarea. To jest wymagane.