14-2 Répondre à l'événement
Maintenant, il nous suffit de répondre à l'événement dans ProjetsIndex
.
Pour répondre à l'événement, on doit lier ce dernier à une fonction locale du composant parent (ProjetsIndex
).
On fait cela via la balise du composant à l'origine de l'événement.
Gestion de l'événement
-
Ajoutez une fonction dans
ProjetsIndex
responable de gérer l'événement de suppression.src/app/features/projets/pages/projets-index.tsexport class ProjetsIndex implements OnInit {
protected projets: Projet[] | null = null
constructor(private projetService: ProjetService) {}
async ngOnInit(): Promise<void> {
this.projets = await this.projetService.obtenirTous();
}
protected gestionProjetDeleted() {
}
} -
Lier l'événement à la fonction
@Component({
selector: 'app-projets-index',
imports: [
ProjetsListe
],
template: `
<h1>Projets</h1>
<app-projets-liste [projets]="projets" (projetDeleted)="gestionProjetDeleted()"></app-projets-liste>
`,
styles: ``
})info(projetDeleted)
est l'événement du composant enfant, au même titre qu'on pourrait réagir à(click)
si c'était un bouton!gestionProjetDeleted()
est notre fonction locale. -
Accepter le détail (valeur) de l'événement. Pour cela,
$event
est utilisé afin d'indiquer qu'on veut passer le détail.src/app/features/projets/pages/projets-index.ts//...
<app-projets-liste [projets]="projets" (projetDeleted)="gestionProjetDeleted($event)"></app-projets-liste>
//...
protected gestionProjetDeleted(projetId: number) {
}
Tester que le lien enfant-parent fonctionne
Testons que le tout fonctionne en affichant un message dans la console.
protected gestionProjetDeleted(projetId: number) {
console.log(`Demande de suppression du projet ${projetId}`);
}
Cliquez sur le bouton Supprimer
et une fois la confirmation faite, vous devriez voir dans la console du navigateur quelque chose comme ceci:
🎉