Zbuduj aplikację do projektowania materiału z kątem 2

Sep 12, 2025
Jak
Laptop and phone screens with Angular logo

Materiał kątowy jest ramami komponentami UI, która implementuje specyfikację projektowania materiałów Google dla kątowej 2 - nowej, szybszej implementacji kątowej, napisanej w maszynach. Chociaż nadal w alfa, materiał kątowy zapewnia już zestaw elementów interfejsu wielokrotnego użytku i dostępnych na podstawie materiału.

Sama kątowa jest przeznaczona do użytku na wszystkich platformach (Web, Mobile i Desktop) i ma z nią wiele nowych technologii. Na poziomie JavaScript mamy dodatkową składnię ECMAScript 2015 (ES6), wsparcie dla maszyn i interfejsu z maszynopastu, wraz z dekoratorami z API odbicia metadanych. Używa obserwowalności z biblioteki rozszerzeń biernych, aby zarządzać sekwencjami zdarzeń w sposób funkcjonalny programowanie. Wykorzystuje strefy do kapsułkowania i przechwytywania aktywności asynchronicznej, aby zapewnić formę przechowywania lokalnego wątku, umożliwiając kątowe do automatycznego reagowania na zmiany danych w zdarzeń asynchronicznych w celu utrzymania wiązań danych. Wreszcie, ładowanie modułu jest obsługiwane przez SystemJs.

W tym samouczku będziemy korzystać z kątowego 2, aby utworzyć prostą aplikację do zrobienia z elementami projektowania materiałów podpisowych. Uzyskaj tutaj pliki źródłowe .

Zostać ustawionym

Konfigurowanie początkowego środowiska może być trudne. Tam jest Nasiona kątowe dostępny, jak również Kątowy2-Starter. . Jednak jest jeszcze lepszy: z kątowy-cli. Możesz skonfigurować projekt kątowy 2 za pomocą jednego polecenia.

Nie tylko dba o konfigurację wszystkich technologii, o których wspomniałem w ostatniej sekcji (przez węzeł i NPM), również dodać rusztowanie do testowania jednostki Jasmine, kątomierz testowania końcowego, plus testowanie TSLINT, a Codelyzer Codic Code Analiza kątowego maszynopisu 2. Chociaż nie musisz używać tych wszystkich, zdecydowanie powinieneś. Jest tak proste w użyciu, zastanawiisz się, jak kiedykolwiek się bawiłeś.

Kątowy CLI jest dostępny jako pakiet NPM, więc będziesz musiał zainstalować węzeł i NPM na całym świecie na swoim komputerze NPM install -g angular-cli . Teraz utworzyć nową aplikację kątową 2 ng nowy materiał2-do . Będziesz musiał trochę poczekać, ponieważ po tym, jak generuje niezbędne pliki, inicjuje git repo i robi NPM Install. aby pobrać wszystkie niezbędne moduły Node_modules / . Spójrz na pakiet.json. I znasz tam moduły i skrypty.

Utworzyłeś nową aplikację Kątową 2, która przestrzega oficjalnych najlepszych praktyk.

Dodaj konstrukcję materiałową

Domyślna aplikacja nie wie nic o projekcie materialnej (jestem pewien, więc musimy go dodać.

Istnieje lista opublikowanych pakietów konstrukcyjnych kątowych 2 w @ kanciasty2-materiał biblioteka. W tym przykładzie będziemy używać rdzeń (wymagane dla wszystkich aplikacji kanciastych 2), a także przycisk , karta , Pole wyboru , Ikona , Wejście , lista i pasek narzędzi :

npm install --save @angular2-material/{core,button,card,checkbox,icon,input,list,toolbar}@2.0.0-alpha.5

Dla pakietu dostawcy, musimy dodać @ kątowy2-materiał / ** / * do tablicy vendornpmfiles. w kątowa-cli-build.js . Musimy również dodać ścieżkę do @ kanciasty2-materiał do mapy obiekt:

 Const Map: Any = {
  "@ kątowy2-materiał": "dostawca / @ kanciasty2-materiał"
}; 

Niech SystemJs wie, jak przetwarzać nowe moduły, wskazując na główne pliki każdego z pakietów:

 Const Pakiety: dowolny = {};

// Umieść nazwy dowolnego elementu materiału tutaj
Const MaterialPKGS: String [] = ["Core '," przycisk "," karta "," pola wyboru ",
"Ikona", "wejście", "lista", "pasek narzędzi";

MaterialPkgs.Forach ((PKG) = & GT; {
  pakiety [`@ kątowy2-materiał / $ {pkg}`] = {main: `$ {pkg} .js`};
}); 

Teraz nadszedł czas, aby załadować czcionkę ikony projektu materiału w z src / index.html. . Każda czcionka będzie działać, ale używamy standardowych ikon projektowych materiałów:

 Link href = "https://fonts.googleapis.com/icon?family=Material+icons" Rel = "Stylesheet" & GT; 

Utwórz okno dialogowe MD

Możemy teraz pracować z konstrukcją materialną w naszej aplikacji do do zrobienia. Jeden z obecnie brakujących elementów z konstrukcji materiału kątowego 2 jest monit lub okno dialogowe, więc dla naszego pierwszego zadania zrobimy jeden!

Utwórzmy nowy komponent za pomocą karty projektowej, paska narzędzi, wejścia i kilku przycisków. w SRC / App. folder twojego repo, typ Ng generuj okno dialogowe Component . To generuje nowe DIALOGCOMPONENT. w SRC / App / Dialog i dodaje beczkę System-config.ts. więc SystemJs wie, jak go załadować.

Jeśli spojrzysz na wygenerowane Dialog.comPonent.ts. Plik, zobaczysz pierwszą linię: Importuj {komponent, oninit} od "@ kątowy / rdzeń"; . Składnik jest jednym z głównych bloków budowlanych kątowych i Oninit. jest jednym z wdrażania interfejsów. Jednak w celu uzyskania dostępu do komunikacji między zagnieżnymi elementami, a także wspomniane powyżej elementy projektu materiału, musimy importować wejście, Wynik i Eventemitter. od @ kątowy / rdzeń; i Mdcard. , Mdinput. , Mdtoolbar. i Mdbutton. z odpowiednich modułów w @ kanciasty2- materiał biblioteka.

Aby wykonać te materiały, musimy wstrzyknąć dyrektywy nasze DIALOGCOMPONENT. wymaga. Dodamy następujące dyrektywy do @Składniki Metadane:

 Szablonurl: "Dialog.comPonent.html",
Dyrektywy: [Mdcard, Mdtoolbar, Mdinput, Mdbutton],
Styleurls: ['Dialog.comPonent.csssss'] 

Następnie deklarujemy liczbę @Wejście zmienne ( oktekst , anulować i tak dalej), które pozwalają nam zdefiniować zawartość okna dialogowego. Musimy również dodać jeden @Wynik emiter, który pozwala nam wywołać funkcję o wartości w składniku nadrzędnym, gdy okno dialogowe jest zamknięte.

Teraz możemy zastąpić wygenerowany konstruktor Dialog.comPonent.ts. Z następującym kodem:

 Konstruktor () {
 to.oktext = 'ok';
 to.CancelText = 'Anuluj';
}

emitvalue (wartość) {
 to.Valueemed.emit (wartość);
} 

Jak również używać @Wejście zmienne w naszej DIALOGCOMPONENT. w ramach Dialog.comPonent.html. Szablon, The.. MD-wejście pozwala nam przyjąć dane wejściowe od użytkownika:

 & LT; MD-wejście klasy = "pełna szerokość" [symbol zastępczy] = "symbol zastępczy"
        [(Ngmodel)] = "Wartość" #dialoginput
        (Keyup.ENer) = "EmitValue (wartość)"
        (Keyup.escape) = "EmitValue (Null)" & GT; & LT; / MD-wejście & GT; 

The. MD-przyciski Pozwól użytkownikowi kliknąć "OK", "Anuluj" lub cokolwiek zdecydujesz się oznaczyć te przyciski:

 Przycisk MD (kliknij) = "EmitValue (Null)" Color = "Primary" & GT;
  {{ANANDEXT}}
& lt; / button & gt;
& LT; Przycisk MD-Podniesiony przycisk (kliknięcie) = "EmitValue (wartość)" Color = "Primary" & GT;
  {{oktext}}
& LT; / Button & GT; 

Zauważ Keyup. Pełniczki zdarzeń, które zadbają o rzeczy, gdy naciśnięty jest klawisz Enter lub Escape. Te ładowarki są identyczne z Kliknij Pełnomocnicy wydarzeń anulować i oktekst . Ucieczka robi to samo co anulowanie (emitvalue (null)) i uderzanie w Enter będzie miał ten sam wynik jako kliknięcie OK (emitvalue (wartość)) . Pozwala to na szybki monitujący przez użytkownika wartość przez A. MD-wejście i otrzymuj emitowane produkty.

Możemy zobaczyć przykłady wielu elementów projektowych materiałów: MD-CARD. , Przycisk MD. , i tak dalej. Musimy również dodać trochę CSS Dialog.comPonent.css. Aby uzyskać pragnienie układu - możesz zobaczyć pełny kod w załączonym Github Repo.

Teraz dodajmy to DIALOGCOMPONENT. do Material2-DO.COMPONENT.HTML. Aby zobaczyć, jak wygląda:

 & LT; App-Dialog [Title] = "" Monit dialogowy ""
  [Szablon] = "" Jest to nasz nowy komponent oparty na projektowaniu: ""
  [Placeholder] = "" Wpisz tekst tutaj "
  [oktekst] = "" tak ""
  [Anuluj] = "" Nie "
  [Wartość] = "" Tekst począwszy ""
  (JAKOŚĆ) = "Log ($ Event)"
  [showprompt] = "true" & gt;
& LT; / App-Dialog & GT; 

Zawiadomienie mamy dosłowne struny do wszystkich @Inputs. . Wymagają one od nas stosowania pojedynczych i podwójnych cytatów, w przeciwnym razie kanciasty interpretuje zawartość jako nazwa zmiennej w Składnik zakres.

Mamy też jedną emitowaną @Wynik . To sprawia, że ​​okno dialogowe jest proste i niezwykle konfigurowalne. Większość wejść domyślna byłaby puste struny, jeśli zostaną pominięte.

Modyfikujmy się Materiał2dokomponent. . Musimy importować dialogComponent i deklarować go jako dyrektywę, inaczej Materiał2dokomponent. nie będzie mógł go sprawić. Dodamy również funkcję dziennika:

 Log (tekst) {
   konsola.log (tekst);
 } 

Spójrzmy na nasze dzieło. Możesz obsługiwać aplikację (domyślny port to 4200), biegając NPM Run-Script Start , co z kolei biegnie NG Server. . Jeśli otworzysz konsolę, możesz zobaczyć, co jest rejestrowane: Zawartość wejścia jest emitowana po kliknięciu "Tak" i zero jest emitowany po kliknięciu "Nie".

Jesteśmy teraz gotowi do korzystania z tego nowego DIALOGCOMPONENT. Aby utworzyć naszą aplikację do do zrobienia.

Utwórz główną aplikację

Użyjemy następujących komponentów MD dla głównej aplikacji: pasek narzędzi , lista , element listy , Pole wyboru , przycisk , Ikona , Ikona-rejestr. i jego zależne, Http_provider. , z kątowej biblioteki HTTP. Należy je dodać do sekcji importu Materiał2dokomponent. .

Po raz kolejny, aby móc renderować te komponenty, musimy je umieścić w @Składniki metadata. dyrektywy macierzy się wraz z DIALOGCOMPONENT. , które właśnie dodaliśmy:

 Dyrektywy: [Mdcard, Mdtoolbar, MDlist, Mdlistitum, MdCheckbox, Mdbutton, MDicon, DialogComponent], 

Aby uzyskać dostęp do Mdiconregistry. , musimy go wstrzyknąć wraz z Http_providers. , za pośrednictwem @Składniki metadata. dostawcy szyk:

 Dostawcy: [Mdiconregistry, http_providers], 

Teraz wykorzystywamy nasze DIALOGCOMPONENT. , dodając wystarczającą ilość logiki, aby uzyskać prostą aplikację do do zrobienia. The. Tododialog. jest wywoływany, aby otworzyć naszym dialogu, z zadaniem do edycji ( do zrobienia ) Or zero Jeśli tworzymy nowy.

Skonstruowaliśmy domyślne zmienne do nowego zadania lub jeśli edytujemy zadanie zamiast tego, zmieniamy je odpowiednio. Następnie pokazujemy DIALOGCOMPONENT. Ustawiając showdialog. zmienna do prawdziwe :

 Tododialog (TODO = NULL) {
    to.OKBUTTONTEXT = 'Utwórz zadanie;
    to.fieldValue = '';
    to.editingtodo = todo;
    Jeśli (Todo) {
      to.fieldValue = todo.title;
      to.OKBUTTONTEXT = 'Edytuj zadanie;
    }
    to.showdialog = true;
  } 

The. UpdateTodo. Funkcja nazywa się, gdy chcemy go zamknąć. Inne funkcje ( Edittodo. , addtodo. , Hyderia ) są metodami pomocnikami UpdateTodo. .

 UpdateTodo (tytuł) {
    Jeśli (tytuł) {
      tytuł = title.trim ();
      Jeśli (w ten sposób) {
        to.edittodo (tytuł);
      } else {
        to.addtodo (tytuł);
      }
    }
    to.hydredialog ();
  }

W Material2-DO.COMPONENT.HTML. Daliśmy naszą aplikację Pasek narzędzi MD. gdzie umieściliśmy tytuł i MD-Ikona nazywa Dodaj (który wygląda jak znak plus) dla naszego przycisku pływającego (FAB), co pozwala nam utworzyć nowe zadanie:

 & LT; Przycisk MD-Fab Class = "Fab-add" (kliknij) = "Tododialog ()" & GT;
      & lt; MD-Icon & GT; Dodaj & LT; / MD-Icon & GT;
    & LT; / Button & GT; 

Używamy MD-Card trzymać A. Lista MD. i an. * Ngfor. Aby iterować, i wyświetlać, nasze Lista rzeczy do zrobienia AS. Elementy MD-LIST :

 & LT; MD-LIST-ELEMENT * NGFOR = "Niech tokolwiek todolist; niech indeks = indeks" & gt; 

Md-CheckBox. Umożliwia nam zaznaczenie przedmiotów na naszej liście. I mamy dwa MD-MINI-FAB Przyciski możemy użyć do usunięcia i edycji naszego zadania: MD-Icons Delete_Forever i tryb_edit. :

& LT; przycisk MD-MINI-FAB (kliknij) = "Usuń (indeks)" Color = "Primary" & GT;
  & lt; MD-Icon & GT; Delete_Forever & LT; / MD-Icon & GT;
& lt; / button & gt;

& LT; przycisk MD-MINI-FAB (kliknij) = "Tododialog (Todo)" Color = "Primary"
        [Wyłączone] = "Todo.completed" & GT;
  & lt; MD-Icon & GT; Mode_edit & LT; / MD-Icon & GT;
& LT; / Button & GT; 

Z małym CSS pozostają ukryte, dopóki się wywrócisz (lub klikniesz). Możesz zobaczyć kod w repo.

Iść naprzód

Ponieważ materiał kątowy 2 jest nadal w alfa, istnieją pewne rzeczy, których brakuje - w szczególności, w szczególności sygnatariusz MD Ropipter. Chociaż mogą przebić zmiany do API przed sobą, jest bardzo funkcjonujące. Rodziło również o roszczenie o bezpośrednim interfejsie interfejsu API, które nie mylenia deweloperów i jest łatwe do wykorzystania do stworzenia świetnych zastosowań.

Niniejszy artykuł został pierwotnie opublikowany w wydaniu 284 netto, najlepiej sprzedający się magazyn na świecie dla projektantów stron internetowych i programistów. Subskrybuj tutaj .

Powiązane artykuły:

  • Co nowego w kątach 4?
  • Jak zbudować pełnotrawną stronę internetową w kątach
  • Zbuduj deskę nawigacyjną z Angularjs

Jak - Najpopularniejsze artykuły

Zacznij od Grav CMS

Jak Sep 12, 2025

(Kredyt obrazu: przyszłość) Grava jest systemem zarządzania treścią (CMS) z różnicą. Systemy zarządzania tr..


Jak przyspieszyć retopologię w Majowie

Jak Sep 12, 2025

(Kredyt obrazu: Antony Ward) Zdolność do wykonywania retopologii w Majowie jest użyteczną umiejętnością. Retop..


Odtworzyć klasyczny manga

Jak Sep 12, 2025

Byłem ogromnym fanem mangi od dzieciństwa i niemożliwe jest ukryć wpływ, że pasja ma na mojej sztuce. W moim dążeniu do m..


Jak podkreślić centralny punkt obrazu

Jak Sep 12, 2025

Korzystanie z elementów Twojego Ołówek underdrawing jest świetnym sposobem na przyjęcie uwagi widza w kawałk..


Wyrównaj znaki gry z kreatywnym montażem

Jak Sep 12, 2025

Z ogromną różnorodnością przerażających stworzeń i postaci do stworzenia, pracując z warsztatami gier, aby przetłumaczy..


Jak zaprojektować okładkę książki w InDesign

Jak Sep 12, 2025

Powiedzenie może być: "Nie oceniaj książki po okładce", ale projekt okładki może w rzeczywistości zrobić lub przełamać sukces książki. Jeśli jesteś taki jak ja, deska przedniej..


Zrób kompozyt w Photoshopie

Jak Sep 12, 2025

Adobe uruchomi nową serię samouczków wideo dzisiaj o nazwie Dokonuje go teraz, który ma na celu przedstawić sposób tworzenia konkretnych projektów projektowych przy użyciu różnych ..


Zbuduj złożone układy z Postcss-Flexbox

Jak Sep 12, 2025

Flexbox to świetne narzędzie do redukcji CSS Blow i ma trochę cukru wbudowany, aby poradzić sobie z rzeczami jak kolejność ..


Kategorie