Creați un App Finder Library în Angular HomeComponent și LibraryListComponent

Într-una din seriile anterioare de tutorial angular, am acoperit elementele de bază ale sistemului Angular, începând de la instalarea CLI-ului și apoi discutând despre modul de creare a componentelor de bază și implementarea rutei. Consultați articolul meu despre Crearea primului dvs. aplicație angulară: Noțiuni de bază, pentru o actualizare a instalării CLI-ului unghiular și a altor instrumente recomandate pentru a crea cu ușurință o aplicație Angular.

Aplicația de informații despre țară pe care am creat-o în această serie a fost bună pentru a începe cu Angular, dar nu avea câteva caracteristici. De exemplu, am stocat informația pe care am dorit să o afișăm utilizatorilor noștri într-un matrice. Cu toate acestea, în acest tutorial, vom trece dincolo de un set mic de date și lăsăm utilizatorilor să caute baza de date bibliotecă disponibilă de la CDNJS.

Iată aplicația pe care o vom construi:

În postul anterior, am creat o LibraryService pentru a obține informații despre diferite biblioteci utilizând API-ul CDNJS. Am creat, de asemenea, un app-routing.module.ts fișier pentru a furniza toate logica de rutare pentru aplicația noastră.

În logica de rutare, s-ar putea să fi observat că îi spunem lui Angular să redea HomeComponent când utilizatorii se află pe pagina de pornire a aplicației noastre. În mod similar, îi spunem lui Angular să redea LibraryListComponent când utilizatorii fac clic pe Lista tuturor bibliotecilor după ce introduceți ceva în câmpul de introducere.

În acest tutorial, vom crea aceste două componente pentru aplicația Angular. Vom crea HomeComponent mai întâi și apoi creați LibraryListComponent mai tarziu.

Crearea clasei HomeComponent

Pentru a crea HomeComponent fișierele utilizând CLI Angular, deplasați-vă în directorul bibliotecă de căutare- app în consola. După aceea, executați următoarea comandă:

ng genera componentă acasă

Acest lucru va crea un folder numit Acasă în directorul rădăcină al aplicației de căutare a bibliotecii. Acest dosar va avea patru fișiere diferite. Trei dintre aceste fișiere ar trebui să fie numit home.component.css, home.component.html, și home.component.ts.

Fișierul HTML va conține codul de șablon pentru HomeComponent, iar fișierul CSS va conține informațiile despre stil pentru acel șablon. Fișierul TypeScript va conține logica noastră HomeComponent.

Iată codul pentru home.component.ts fişier:

import Component de la '@ angular / core'; import LibraryService de la "... /library.service"; @Component (selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.css']) clasa de export HomeComponent searchTerm = "; libraryName = ; constructor (bibliotecă privatăService: LibraryService)  updateTerm (eveniment: orice): void this.searchTerm = event.target.value;  updateName (eveniment: orice): void this.libraryName = event.target.value;  

Dacă ați citit crearea primei serii de aplicații Angular, este posibil să fi observat că HomeComponent pe care am creat-o în cel de-al doilea tutorial al acelei serii a importat OnInit modul de la miezul unghiular. De asemenea, am inițializat valorile diferitelor proprietăți din clasa respectivă în interiorul ngOnInit () metodă.

Niciun astfel de modul nu a fost importat de data aceasta pentru că HomeComponent nu primește sau nu stabilește valori în timpul inițializării. În afară de asta, cele mai multe alte lucruri se fac într-o manieră similară.

Începem prin importul LibraryService clasa pe care am creat-o mai devreme. După aceea, am setat valoarea selector, templateUrl, și styleUrls în interiorul decoratorului de componente. Rețineți că puteți oferi mai multe foi de stil pentru a modela o componentă, dar numai un singur fișier șablon pentru ao face.

În interiorul HomeComponent definirea clasei, definim două proprietăți numite termen de căutare și libraryName. Valorile ambelor aceste proprietăți sunt setate, în mod implicit, la un șir gol. Aceste valori sunt actualizate în interiorul updateTerm () și updateName () atunci când utilizatorii introduc ceva în câmpul de introducere respectiv.

Crearea șablonului HomeComponent

Al nostru HomeComponent va avea două câmpuri de intrare și două linkuri care se vor comporta ca butoane și vor duce utilizatorii pe căi diferite. Câmpurile de intrare vor asculta a keyup și actualizați valorile termen de căutare și libraryName proprietăți în consecință.

Cele două linkuri de lângă câmpurile de intrare iau utilizatorii pe căi diferite folosind routerLink directivă. În primul caz, utilizatorii merg la / List / SEARCHTERM, iar în al doilea caz, ei merg / Detaliu / libraryName. Calea este actualizată dinamic pe baza valorii curente a câmpului de intrare. De exemplu, calea devine / Lista / bootstrap când cineva tip bootstrap în primul câmp de intrare și devine / Detaliu / jquery când cineva tip jquery în al doilea câmp de introducere.

Iată codul complet al nostru home.component.html fişier:

Lista tuturor bibliotecilor

Afișați detaliile bibliotecii

Biblioteci populare

jQuery
Chart.js
SweetAlert

De asemenea, am creat trei cutii diferite pentru a lista numele unor biblioteci populare. Utilizatorii vor putea vizualiza direct detaliile acestor biblioteci în loc să le scrie mai întâi numele și apoi să facă clic pe Arată Biblioteca buton.

Toate aceste elemente au fost înfășurate în interiorul unui recipient div element pentru a le grupa împreună pentru stil.

Crearea fișierului CSS HomeComponent

După scrierea logicii componentei și crearea fișierului șablon, trebuie doar să actualizăm fișierul CSS pentru a ne face HomeComponent prezentabil.

Iată CSS-ul pe care l-am folosit pentru a modela diferite elemente din fișierul șablon. Puteți schimba toate regulile de stil aici pe baza preferințelor proprii.

div.wrapper lățime: 800px; margine: 20 pixeli automat;  h3 font-size: 1.5; text-align: centru; culoare: # 666; font-familie: 'Lato';  a.simple fundal: alb; culoarea neagra; frontieră: 1px solid negru; padding: 5px 10px; font-size: 1.3rem; font-familie: 'Lato'; font-weight: 300; raza de graniță: 5px; text-decoration: nici unul; lățime: 200px; afișare: inline-block; text-align: centru;  intrare border: none; margine de fund: 2px solid # 00ccff; font-size: 1.5rem; contur: nici unul; font-familie: 'Lato'; font-weight: 300; margin-dreapta: 100px; lățime: 450px;  intrare: focalizare border-bottom: 2px solid # ccff00;  div.library-box font-family: 'Lato'; culoare albă; fundal: violet; lățime: 200px; înălțime: 70px; text-align: centru; padding-top: 30px; font-size: 2m; raza de graniță: 4px; afișare: inline-block; margine: 20 pixeli;  div.library-box: hover fundal: negru; cursor: pointer;  

Totul din fișierul CSS este explicabil. Am stabilit lățimea ambalajului nostru div egală cu o valoare fixă ​​de 800 px. Cutiile de jos cu numele bibliotecilor populare își schimbă culoarea de fundal în negru atunci când utilizatorii se deplasează peste ele.

Crearea clasei LibraryListComponent

Așa cum am menționat mai devreme, LibraryListComponent va fi folosit pentru a lista toate bibliotecile care conțin termenul de căutare extras din calea curentă. Puteți genera rapid toate fișierele necesare pentru această componentă executând următoarea instrucțiune pe linia de comandă:

ng genera lista de biblioteci componente

La fel ca și componenta noastră de acasă, această comandă va crea un dosar numit bibliotecă-listă în directorul rădăcină. În interiorul dosarului vor fi patru fișiere, dar trebuie să ne îngrijorăm doar trei: bibliotecă-list.component.css, bibliotecă-list.component.html, și bibliotecă-list.component.ts.

Vom încerca să obținem lista de biblioteci legate de termenul de căutare furnizat în URL-ul de îndată ce se încarcă componenta. Aceasta înseamnă că va trebui să importăm și noi OnInit impreuna cu component din @ Unghiular / core.

Importul ActivatedRoute ne permite să lucrăm cu toate informațiile de pe un traseu asociat componentei încărcate în prezent. În acest fel, putem extrage ușor termenul de căutare din calea curentă. După importul diferitelor dependențe de la Angular, mergem și ne importăm LibraryService clasă.

Ca de obicei, decoratorul componentelor stochează valoarea selectorului, a șablonului URL și a foilor de stil pentru LibraryListComponent.

În interiorul ngOnInit () metoda, numim getLibrary () metodă. getLibrary () metoda utilizează în continuare searchLibraries () metoda de la LibraryService pentru a obține toate rezultatele noastre. Aceste rezultate sunt apoi stocate în interiorul biblioteci matrice declarată în partea de sus a definiției noastre de clasă.

import Component, OnInit de la '@ angular / core'; import ActivatedRoute de la '@ unghiular / router'; import LibraryService de la "... /library.service"; @Component (selector: 'app-library-list', templateUrl: './library-list.component.html', styleUrls: ['./library-list.component.css']) clasa de export LibraryListComponent implementează OnInit libraries = []; constructor (rută privată: ActivatedRoute, bibliotecă privatăService: LibraryService)  ngOnInit () this.getLibrary ();  getLibrary (): void const bibliotecă: string = this.route.snapshot.paramMap.get ("căutare"); this.libraryService.searchLibraries (bibliotecă) .then ((date: any) => data.results.forEach (funcție (rezultat) this.libraries.push ('name': result.name, .versiune, "descriere": rezultat; descriere);););  

Gândurile finale

În acest tutorial, am creat cu succes HomeComponent din aplicația noastră pentru găsirea bibliotecii. Acest lucru va permite utilizatorilor să caute diferite biblioteci în baza de date CDNJS. HomeComponent nu este foarte util de la sine. Așa că vom crea alte două componente numite LibraryListComponent și LibraryDetailsComponent.

Am actualizat deja fișierul TypeScript pentru fișierul nostru LibraryListComponent. Vom actualiza șablonul HTML și fișierele CSS în tutorialul următor. Dacă aveți întrebări legate de acest tutorial, anunțați-ne în comentarii.

Cod