Création de votre première application angulaire composants, partie 2

Dans le troisième tutoriel de la série, vous avez appris à créer le composant Accueil de l'application d'informations sur votre pays. Nous allons créer deux autres composants dans ce tutoriel. L’un des composants listera tous les pays que nous avons stockés dans le DES PAYS tableau. Un autre composant affichera les détails de tout pays sélectionné par l'utilisateur.

Création du composant AllCountriesComponent

le AccueilComposant que nous avons créé dans le tutoriel précédent et le Tous les paysComposant que nous allons créer dans cette section sont très similaires. La seule différence est qu'au lieu de trier les DES PAYS tableau et le découper pour n’obtenir que les trois premiers pays, nous les répertorierons tous en même temps. Dans la console, accédez au répertoire de votre projet et exécutez la commande suivante:

ng générer tous les pays composant

Cela va créer un dossier nommé tous les pays à l'intérieur de src / app répertoire de votre application angulaire. Le dossier aura trois fichiers différents nommés all-countries.component.ts, all-countries.component.html, et all-countries.component.css. La logique de composant comme obtenir la liste des pays et initialiser le composant lui-même ira à l'intérieur du .ts fichier. le .html fichier stockera le modèle pour le composant, et le .css fichier stockera différentes règles CSS pour styler le modèle.

Voici le code pour le all-countries.component.ts fichier:

importer Component, OnInit à partir de '@ angular / core'; importer Pays de '… / pays'; importer CountryService de '… /country.service'; @Component (sélecteur: 'app-tous-pays', templateUrl: './all-countries.component.html', styleUrls: ['./all-countries.component.css']) la classe d'exportation AllCountriesComponent implémente OnInit pays: pays []; constructeur (private countryService: CountryService)  ngOnInit () this.getCountries ();  getCountries (): void this.countries = this.countryService.getCountries (); 

Comme vous pouvez le constater, le code est assez basique. Nous importons le Pays et CountryService les classes que nous avons créées dans le deuxième tutoriel de la série. Le composant décorateur est utilisé pour spécifier le sélecteur que nous utiliserons pour identifier le Tous les paysComposant.

Dans la définition de la classe, nous créons un des pays propriété qui accepte un tableau de Pays objets comme sa valeur. le CountryService La classe est ajoutée au composant à l'aide de l'injection de dépendance. Nous appelons le getCountries () méthode de cette classe à l’initialisation. le getCountries () la méthode elle-même repose sur getCountries () du CountryService classe, qui retourne un tableau de Pays objets.

le all-countries.component.html fichier va stocker le modèle pour notre composant.

Liste de tous les pays de notre base de données

nom du pays

Capitale
(country.capital)

Tout comme le modèle pour AccueilComposant, nous utilisons * ngFor d'énumérer tous les pays obtenus par le getCountries () méthode et stocké dans le des pays propriété du Tous les paysComposant classe. Nous utilisons cette composante pour afficher les capitales de différents pays en utilisant le Capitale propriété. Vous en apprendrez plus sur le routerLink directive utilisée avec une tag dans le prochain tutoriel.

Le CSS utilisé est le même que celui de la home.component.css fichier. La seule différence est que nous changeons la couleur d'arrière-plan de chaque bloc de pays en vert. Voici le code CSS complet:

une text-decoration: none;  *, *: après, *: avant taille de la boîte: border-box;  body font-family: 'Lato';  h2, h3, h4, p font-family: 'Lato'; marge: 10px;  .country-block p marge-top: 0; marge inférieure: 0;  .country-block h4 margin-bottom: 10px;  h4 position: relative; taille de la police: 1.25rem;  .container margin: 0 50px; text-align: center;  .country-unit width: 200px; affichage: inline-block; marge: 10px;  br clear: les deux;  .country-block padding: 30px 0; text-align: center; Couleur blanche; hauteur: 150px; couleur de fond: # 4CAF50; border-radius: 2px;  .country-block: survoler background-color: # FF5722; curseur: pointeur; Couleur blanche;  

Créer le CountryDetailComponent

le CountryDetailComponent sera le troisième et dernier composant de notre application angulaire. Chaque fois que les utilisateurs cliquent sur le nom d’un pays figurant dans la liste. AccueilComposant ou Tous les paysComposant, ils seront emmenés au CountryDetailComponent.

Retournez à la console et exécutez la commande suivante:

ng générer des informations détaillées par pays

Cela va créer un dossier nommé détail du pays à l'intérieur de src / app répertoire de votre application. Vous devriez voir quatre fichiers différents dans le dossier. Trois de ces fichiers seront nommés: country-detail.component.ts, country-detail.component.html, et country-detail.component.css. Tout comme les composants précédents, country-detail.component.ts contiendra la logique de notre composant, et country-detail.component.html contiendra le modèle pour le rendre.

Voici le code pour le country-detail.component.ts fichier:

importer Component, OnInit à partir de '@ angular / core'; importer ActivatedRoute depuis '@ angular / router'; importer Emplacement depuis '@ angular / common'; importer Pays de '… / pays'; importer CountryService de '… /country.service'; @Component (sélecteur: 'app-country-detail', templateUrl: './country-detail.component.html', styleUrls: ['./country-detail.component.css']), la classe d'exportation CountryDetailComponent implémente OnInit pays: pays; constructeur (route privée: ActivatedRoute, countryService privé: CountryService, emplacement privé: Location)  ngOnInit (): void this.getCountry ();  getCountry (): void nom const: string = this.route.snapshot.paramMap.get ('nom'); this.country = this.countryService.getCountry (name);  goBack (): void this.location.back (); 

Cette fois, nous avons également importé ActivatedRoute et Location, ainsi que Composant et OnInit. Nous utilisons ActivatedRoute accéder à des informations sur une route associée à un composant chargé dans une prise. Nous utilisons Emplacement pour permettre à notre application d'interagir avec l'URL du navigateur.

Dans la définition de classe, nous créons une propriété nommée pays qui accepte un Pays objet comme valeur. contrairement à AccueilComposant et Tous les paysComposant, la CountryDetailComponent la classe doit montrer les détails d'un seul pays à la fois.

le getCountry () méthode extrait les prénom paramètre de l'instantané de route et utilise la valeur pour trouver un pays avec le nom donné à l'intérieur du DES PAYS tableau. le retourner() Cette méthode ramène l'utilisateur à la page précédente à l'aide de l'outil retour() méthode de la Emplacement classe.

Voici le code pour le country-detail.component.html fichier:

country.name | majuscule

Capitale: country.capital

Surface: country.area | nombre km 2

Population: pays.population | nombre

PIB: pays.gdp | numéro USD

Devise: country.currency

Le code de modèle à l'intérieur du div avec * ngIf = "pays" est rendu que si pays a été défini sur une valeur. Nous utilisons des pipes angulaires pour mettre en majuscule le nom du pays et formater correctement la superficie et la population des pays. Nous lions l’événement clic de notre Retourner bouton au retourner() méthode de notre composant afin que chaque fois que les utilisateurs cliquent sur un bouton, ils sont ramenés à la page précédente.

Voici le CSS qui ira à l'intérieur du country-detail.component.css fichier:

.conteneur marge: 0 auto; largeur: 380px;  h2, p font-family: 'Lato';  p taille de la police: 1.25rem;  p span color: # 4CAF50; border-radius: 5px; largeur: 200px; affichage: inline-block;  label display: inline-block; largeur: 3em; marge: 0,5 m 0; couleur: # 607D8B; poids de police: gras; famille de polices: 'Lato';  bouton margin-top: 20px; famille de polices: Arial; couleur de fond: # F44336; bordure: aucune; rembourrage: 5px 10px; border-radius: 20px; curseur: pointeur; contour: aucun; Couleur blanche; famille de polices: 'Lato';  

Dernières pensées

Avec l'achèvement de ce tutoriel, nous avons ajouté deux composants supplémentaires à notre première application Angular. le Tous les paysComposant était très similaire à la AccueilComposant comme ils ont tous deux rendu une liste de pays stockés dans le DES PAYS tableau. le CountryDetailComponent était différent car il extrayait des informations sur un seul pays de la DES PAYS tableau basé sur son nom. 

Après avoir créé trois composants différents, vous devriez maintenant avoir une compréhension de base des interactions entre .ts, .html, et .css fichiers pour créer un composant pleinement fonctionnel.

Dans le prochain tutoriel de la série, vous apprendrez à utiliser tous ces composants ensemble et à apporter les dernières modifications nécessaires pour que l'application puisse s'exécuter sans erreur..