Communication Entre Composants et Navigation
Vous apprendrez à configurer correctement la navigation au sein de votre application Angular et à transmettre des données entre les composants en utilisant l’URL.
Nous avons déjà deux routes configurées :
-
/— affiche la liste de toutes les tâches ; -
/task/:id— affiche les détails d’une tâche spécifique par son ID.
Notre objectif est maintenant de faire en sorte que, lorsqu’un utilisateur clique sur un bouton à l’intérieur d’une carte de tâche, l’application navigue vers une page de détails. Le TaskDetailsComponent récupérera alors l’ID de la tâche depuis l’URL et l’utilisera pour obtenir l’ensemble des données de la tâche.
Nous ne transmettons pas de données directement entre les composants. À la place, nous utilisons Angular Router — nous transmettons l’ID de la tâche via l’URL, et le composant utilise cet ID pour récupérer la tâche depuis un service.
Comment les composants interagissent
Définissons comment cette interaction de routage va fonctionner.
Nous allons ajouter un bouton à l'intérieur de TaskComponent. Lorsqu'il est cliqué, le composant émettra un événement vers le composant parent (TaskListComponent). Le parent gérera la navigation réelle en mettant à jour l'URL, ce qui déclenchera le chargement de TaskDetailsComponent par Angular pour la tâche sélectionnée.
Pourquoi ne pas effectuer le routage directement depuis TaskComponent ?
Si nous souhaitons réutiliser TaskComponent ailleurs (par exemple, dans une fenêtre modale ou une autre liste), il ne doit pas être lié à la logique de routage. Il doit simplement notifier le parent qu'une action de navigation est demandée.
Cette approche est plus facile à tester et à lire, centralise la logique de routage, et garantit que TaskComponent reste clair et concentré sur ses responsabilités.
Implémentation de TaskComponent
La principale fonction de TaskComponent est d'émettre des événements vers son parent. Nous allons ajouter un bouton dans le template qui appellera navigateToTask(), lequel émettra l'événement.
task-component.ts
task-component.html
task-component.css
Lorsque l'utilisateur clique sur le bouton d'information, la méthode navigateToTask() émet l'identifiant de la tâche. Cet événement est capturé par le parent (TaskListComponent), qui gère ensuite la navigation à l'aide du routeur Angular.
Implémentation de TaskListComponent
Ce composant est responsable de la navigation vers la page de détails de la tâche.
Pour cela, le service intégré Router d'Angular est utilisé, permettant de modifier l'URL de manière programmatique et de charger le composant approprié en fonction de la route.
task-list-component.ts
task-list-component.html
Nous avons ajouté le service Router dans le constructeur. Angular fournit automatiquement ce service lors de la création du composant, aucune configuration supplémentaire n'est donc nécessaire.
Nous avons également mis en place un écouteur d'événement pour (onNavigate), qui déclenche la méthode navigateToTask() .
Lorsque la méthode est appelée (par exemple, lorsque l'utilisateur clique sur le bouton d'information), elle construit la route /task/3, et le routeur met à jour l'URL et charge le TaskDetailsComponent.
Récupération d'une tâche par ID dans TaskDetailsComponent
Lorsque l'utilisateur navigue vers la route /task/:id, Angular charge le TaskDetailsComponent. Ce composant est responsable de :
-
Récupérer l'ID depuis l'URL ;
-
Trouver la tâche correspondante par son ID ;
-
Afficher les détails de la tâche à l'écran.
Voici comment cela fonctionne :
task-details-component.ts
task-details-component.html
task-details-component.css
Explication :
Le service ActivatedRoute permet d'accéder aux paramètres de la route actuelle.
-
On utilise
snapshot.paramMap.get('id')pour extraire la valeuridde l'URL ; -
Ensuite, on la convertit en nombre et on la transmet à
getTaskById(id)duTaskServicepour récupérer la tâche ; -
La méthode
goToHomePage()permet de revenir à la page principale où la liste complète des tâches est affichée.
Ainsi, en utilisant Angular Router, la navigation entre les composants a été configurée avec succès et les données sont transmises via un paramètre d'URL. Le TaskListComponent gère la navigation par identifiant de tâche, et le TaskDetailsComponent lit l'identifiant depuis la route et charge la tâche correspondante.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you show me how to emit the event from TaskComponent?
How do I set up the Router in TaskListComponent?
How does TaskDetailsComponent retrieve the task ID from the URL?
Awesome!
Completion rate improved to 3.13
Communication Entre Composants et Navigation
Glissez pour afficher le menu
Vous apprendrez à configurer correctement la navigation au sein de votre application Angular et à transmettre des données entre les composants en utilisant l’URL.
Nous avons déjà deux routes configurées :
-
/— affiche la liste de toutes les tâches ; -
/task/:id— affiche les détails d’une tâche spécifique par son ID.
Notre objectif est maintenant de faire en sorte que, lorsqu’un utilisateur clique sur un bouton à l’intérieur d’une carte de tâche, l’application navigue vers une page de détails. Le TaskDetailsComponent récupérera alors l’ID de la tâche depuis l’URL et l’utilisera pour obtenir l’ensemble des données de la tâche.
Nous ne transmettons pas de données directement entre les composants. À la place, nous utilisons Angular Router — nous transmettons l’ID de la tâche via l’URL, et le composant utilise cet ID pour récupérer la tâche depuis un service.
Comment les composants interagissent
Définissons comment cette interaction de routage va fonctionner.
Nous allons ajouter un bouton à l'intérieur de TaskComponent. Lorsqu'il est cliqué, le composant émettra un événement vers le composant parent (TaskListComponent). Le parent gérera la navigation réelle en mettant à jour l'URL, ce qui déclenchera le chargement de TaskDetailsComponent par Angular pour la tâche sélectionnée.
Pourquoi ne pas effectuer le routage directement depuis TaskComponent ?
Si nous souhaitons réutiliser TaskComponent ailleurs (par exemple, dans une fenêtre modale ou une autre liste), il ne doit pas être lié à la logique de routage. Il doit simplement notifier le parent qu'une action de navigation est demandée.
Cette approche est plus facile à tester et à lire, centralise la logique de routage, et garantit que TaskComponent reste clair et concentré sur ses responsabilités.
Implémentation de TaskComponent
La principale fonction de TaskComponent est d'émettre des événements vers son parent. Nous allons ajouter un bouton dans le template qui appellera navigateToTask(), lequel émettra l'événement.
task-component.ts
task-component.html
task-component.css
Lorsque l'utilisateur clique sur le bouton d'information, la méthode navigateToTask() émet l'identifiant de la tâche. Cet événement est capturé par le parent (TaskListComponent), qui gère ensuite la navigation à l'aide du routeur Angular.
Implémentation de TaskListComponent
Ce composant est responsable de la navigation vers la page de détails de la tâche.
Pour cela, le service intégré Router d'Angular est utilisé, permettant de modifier l'URL de manière programmatique et de charger le composant approprié en fonction de la route.
task-list-component.ts
task-list-component.html
Nous avons ajouté le service Router dans le constructeur. Angular fournit automatiquement ce service lors de la création du composant, aucune configuration supplémentaire n'est donc nécessaire.
Nous avons également mis en place un écouteur d'événement pour (onNavigate), qui déclenche la méthode navigateToTask() .
Lorsque la méthode est appelée (par exemple, lorsque l'utilisateur clique sur le bouton d'information), elle construit la route /task/3, et le routeur met à jour l'URL et charge le TaskDetailsComponent.
Récupération d'une tâche par ID dans TaskDetailsComponent
Lorsque l'utilisateur navigue vers la route /task/:id, Angular charge le TaskDetailsComponent. Ce composant est responsable de :
-
Récupérer l'ID depuis l'URL ;
-
Trouver la tâche correspondante par son ID ;
-
Afficher les détails de la tâche à l'écran.
Voici comment cela fonctionne :
task-details-component.ts
task-details-component.html
task-details-component.css
Explication :
Le service ActivatedRoute permet d'accéder aux paramètres de la route actuelle.
-
On utilise
snapshot.paramMap.get('id')pour extraire la valeuridde l'URL ; -
Ensuite, on la convertit en nombre et on la transmet à
getTaskById(id)duTaskServicepour récupérer la tâche ; -
La méthode
goToHomePage()permet de revenir à la page principale où la liste complète des tâches est affichée.
Ainsi, en utilisant Angular Router, la navigation entre les composants a été configurée avec succès et les données sont transmises via un paramètre d'URL. Le TaskListComponent gère la navigation par identifiant de tâche, et le TaskDetailsComponent lit l'identifiant depuis la route et charge la tâche correspondante.
Merci pour vos commentaires !