Creare un'app Finder di libreria in Angolare HomeComponent e LibraryListComponent

In una delle mie precedenti serie di tutorial Angular, ho trattato i concetti di base di Angular, iniziando dall'installazione della CLI e poi discutendo su come creare componenti di base e implementare il routing. Controlla il mio post su Creazione della tua prima app angolare: Nozioni di base, per un aggiornamento sull'installazione della CLI Angolare e altri strumenti consigliati per creare un'app Angolare con facilità.

L'app per le informazioni sui paesi che abbiamo creato in quella serie è stata buona per iniziare con Angular, ma mancava alcune funzionalità. Ad esempio, abbiamo memorizzato le informazioni che volevamo mostrare ai nostri utenti all'interno di un array. Tuttavia, in questo tutorial, andremo oltre una piccola serie di dati e consentiremo agli utenti di cercare nel database della libreria disponibile da CDNJS.

Ecco l'app che costruiremo:

Nel post precedente, abbiamo creato a LibraryService classe per ottenere informazioni su diverse librerie usando l'API CDNJS. Abbiamo anche creato un app-routing.module.ts file per fornire tutta la logica di routing per la nostra app.

Nella logica di routing, potresti aver notato che diciamo ad Angular di rendere il HomeComponent quando gli utenti sono sulla home page della nostra app. Allo stesso modo, diciamo ad Angular di rendere il LibraryListComponent quando gli utenti cliccano su Elenca tutte le librerie pulsante dopo aver digitato qualcosa nel campo di immissione.

In questo tutorial, creeremo questi due componenti per la nostra app Angular. Creeremo il HomeComponent prima e poi crea il LibraryListComponent dopo.

Creazione della classe HomeComponent

Per creare il HomeComponent file che utilizzano la CLI Angolare, passare alla directory di biblioteca-finder app nella console. Quindi, esegui il seguente comando:

ng genera il componente home

Questo creerà una cartella chiamata casa all'interno della directory root della nostra app finder della libreria. Questa cartella avrà quattro file diversi. Tre di questi file dovrebbero essere nominati home.component.css, home.component.html, e home.component.ts.

Il file HTML conterrà il codice del modello per HomeComponent, e il file CSS conterrà le informazioni di stile per quel modello. Il file TypeScript conterrà la logica del nostro HomeComponent.

Ecco il codice per il home.component.ts file:

importare Component da '@ angular / core'; import LibraryService da '... /library.service'; @Component (selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.css']) export class HomeComponent searchTerm = "; libraryName =" ; costruttore (private libraryService: LibraryService)  updateTerm (event: any): void this.searchTerm = event.target.value;  updateName (event: any): void this.libraryName = event.target.value;  

Se leggi la creazione della tua prima serie di app Angolare, potresti aver notato che il HomeComponent abbiamo creato nel secondo tutorial di quella serie che aveva importato il OnInit modulo dal nucleo angolare. Abbiamo anche inizializzato i valori delle diverse proprietà in quella classe all'interno di ngOnInit () metodo.

Questo modulo non è stato importato questa volta perché HomeComponent non sta ottenendo o impostando alcun valore durante l'inizializzazione. Oltre a questo, la maggior parte delle altre cose sono fatte in modo simile.

Iniziamo importando il LibraryService classe che abbiamo creato in precedenza. Dopodiché, impostiamo il valore di selettore, TemplateURL, e styleUrls all'interno del decoratore di componenti. Ricordare che è possibile fornire più fogli di stile per lo stile di un componente, ma solo un singolo file di modello per renderlo.

Dentro il HomeComponent definizione della classe, definiamo due proprietà chiamate termine di ricerca e LibraryName. I valori di entrambe queste proprietà sono impostati su una stringa vuota per impostazione predefinita. Questi valori sono aggiornati all'interno di updateTerm () e UpdateName () metodi quando gli utenti digitano qualcosa nel rispettivo campo di input.

Creazione del modello HomeComponent

Nostro HomeComponent avrà due campi di input e due link che fungeranno da pulsanti e porteranno gli utenti a percorsi diversi. I campi di input ascolteranno a keyup evento e aggiornare i valori del termine di ricerca e LibraryName proprietà di conseguenza.

I due collegamenti accanto ai campi di input portano gli utenti a percorsi diversi usando il routerLink direttiva. Nel primo caso, gli utenti vanno a / List / searchTerm, e nel secondo caso, vanno a / Detail / LibraryName. Il percorso viene aggiornato dinamicamente in base al valore corrente del campo di input. Ad esempio, il percorso diventa / List / bootstrap quando qualcuno digita bootstrap nel primo campo di input, e diventa / Detail / jquery quando qualcuno digita jquery nel secondo campo di input.

Ecco il codice completo per il nostro home.component.html file:

Elenca tutte le librerie

Mostra dettagli libreria

Biblioteche popolari

jQuery
Chart.js
SweetAlert

Abbiamo anche creato tre diverse caselle per elencare i nomi di alcune librerie popolari. Gli utenti saranno in grado di visualizzare direttamente i dettagli di queste librerie invece di digitare prima i loro nomi e quindi fare clic su Mostra libreria pulsante.

Tutti questi elementi sono stati avvolti in un contenitore div elemento per raggrupparli insieme per lo styling.

Creazione del file CSS HomeComponent

Dopo aver scritto la logica del componente e creato il file modello, non ci resta che aggiornare il file CSS per creare il nostro HomeComponent presentabile.

Ecco il CSS che ho usato per disegnare diversi elementi all'interno del file template. Puoi modificare tutte le regole di stile qui in base alle tue preferenze.

div.wrapper width: 800px; margine: 20px auto;  h3 font-size: 1.5em; allineamento del testo: centro; colore: # 666; font-family: 'Lato';  a.simple background: white; colore nero; bordo: 1px solido nero; imbottitura: 5px 10px; font-size: 1.3rem; font-family: 'Lato'; font-weight: 300; border-radius: 5px; decorazione del testo: nessuna; larghezza: 200 px; display: blocco in linea; allineamento del testo: centro;  input border: none; border-bottom: 2px solid # 00ccff; font-size: 1.5rem; contorni: nessuno; font-family: 'Lato'; font-weight: 300; margin-right: 100px; larghezza: 450 px;  input: focus border-bottom: 2px solid # ccff00;  div.library-box font-family: 'Lato'; colore bianco; sfondo: viola; larghezza: 200 px; altezza: 70 px; allineamento del testo: centro; padding-top: 30px; font-size: 2em; border-radius: 4px; display: blocco in linea; margine: 20px;  div.library-box: hover background: black; cursore: puntatore;  

Tutto nel file CSS è auto-esplicativo. Impostiamo la larghezza del nostro involucro div uguale a un valore fisso di 800 px. Le caselle in basso con i nomi delle librerie popolari cambiano il loro colore di sfondo in nero quando gli utenti passano il mouse sopra di loro.

Creazione della classe LibraryListComponent

Come ho detto prima, il LibraryListComponent sarà usato per elencare tutte le librerie che contengono il termine di ricerca estratto dal percorso corrente. È possibile generare rapidamente tutti i file necessari per questo componente eseguendo la seguente istruzione sulla riga di comando:

ng genera la libreria-lista dei componenti

Proprio come il nostro componente di casa, questo comando creerà una cartella chiamata biblioteca-list nella directory principale. Ci saranno quattro file all'interno della cartella, ma dobbiamo preoccuparci solo di tre di essi: biblioteca-list.component.css, biblioteca-list.component.html, e biblioteca-list.component.ts.

Cercheremo di ottenere l'elenco delle librerie relative al termine di ricerca fornito nell'URL non appena viene caricato il componente. Ciò significa che dovremo anche importare OnInit insieme a Componente a partire dal @ Angolare / core.

Importazione ActivatedRoute ci consente di lavorare con tutte le informazioni di un percorso associato al componente attualmente caricato. In questo modo, possiamo facilmente estrarre il termine di ricerca dal percorso corrente. Dopo aver importato diverse dipendenze da Angular, procediamo e importiamo le nostre LibraryService classe.

Come al solito, il componente decoratore memorizza il valore del selettore, dell'URL del modello e dei percorsi del foglio di stile LibraryListComponent.

Dentro il ngOnInit () metodo, chiamiamo il getLibrary () metodo. Il getLibrary () il metodo usa ulteriormente il searchLibraries () metodo da LibraryService per ottenere tutti i nostri risultati. Questi risultati vengono quindi memorizzati all'interno di librerie array dichiarato nella parte superiore della nostra definizione di classe.

import Component, OnInit da '@ angular / core'; import ActivatedRoute da '@ angular / router'; import LibraryService da '... /library.service'; @Component (selector: 'app-library-list', templateUrl: './library-list.component.html', styleUrls: ['./library-list.component.css']) classe di esportazione LibraryListComponent implementa OnInit libraries = []; costruttore (route privata: ActivatedRoute, library privatoService: LibraryService)  ngOnInit () this.getLibrary ();  getLibrary (): void const library: string = this.route.snapshot.paramMap.get ('search'); this.libraryService.searchLibraries (library) .then ((data: any) => data.results.forEach (function (result) this.libraries.push ('name': result.name, 'version': result .version, 'description': result.description);, this););  

Pensieri finali

In questo tutorial, abbiamo creato con successo il HomeComponent della nostra app finder della biblioteca. Ciò consentirà agli utenti di cercare diverse librerie nel database CDNJS. Il HomeComponent non è molto utile da solo. Quindi creeremo altri due componenti chiamati LibraryListComponentLibraryDetailsComponent.

Abbiamo già aggiornato il file TypeScript per il nostro LibraryListComponent. Aggiorneremo il modello HTML e i file CSS nel prossimo tutorial. Se hai domande relative a questo tutorial, fammelo sapere nei commenti.