Composants
Les composants sont les blocs de construction d'une application Angular. Par convention on nommera un composant par sa fonctionnalité suivi de Component (ex. InscriptionComponent).
On déclare le composant à l'aide du décorateur @Component
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title: string = 'panier';
}
Anatomie du composant
selector: le nom à utiliser dans les balises d'une page HTML pour invoquer le composanttemplateUrl: Chemin vers le fichier HTML qui décrit le composantstyleUrls: Un tableau des chemins vers les différents fichiers de style à utiliser dans le composant.class: La classe qui contient toute la logique du composant.
Notez bien l'utilisation de export class, ceci nous permet d'importer le composant dans d'autres composants.
Composants enfant
- On utilisera la sélecteur d'un composant enfant pour l'afficher dans le composant parent.
- L'utilisation de
input<>etoutput<>permettent de communiquer entre le parent et l'enfant.
import { Component } from '@angular/core';
@Component({
selector: 'app-enfant',
templateUrl: './enfant.component.html',
styleUrls: ['./enfant.component.css']
})
export class EnfantComponent {
// Pour accepter une entrée du parent
titre = input<string>();
// Pour envoyer des données au parent
notif = output<string>();
emettre(){
this.notif.emit('message au parent');
}
}
Cycle de vie du composant
- Création
- Affichage
- Création et affichage des enfants
- Détection et prise en charge des modifications aux propriétés du composant
- Destruction du composant (retirer du DOM)
Des interfaces (comprenant des méthodes) existent pour exécuter des instructions à des endroits précis du cycle de vie :
OnInit: initialisation du composant; on l'utilise pour charger des donnéesOnChanges: utilisé pour gérer les évènements reliés à la modification des propriétés des champsOnDestroy: ménage avant la destruction du composant
import { Component } from '@angular/core';
...
export class Panier {
...
ngOnInit(): void {
}
ngOnDestroy(): void{
}
}