Comunicación entre Componentes y Navegación
Aprenderá cómo configurar correctamente la navegación dentro de su aplicación Angular y cómo pasar datos entre componentes utilizando la URL.
Ya tenemos dos rutas configuradas:
-
/— muestra la lista de todas las tareas; -
/task/:id— muestra los detalles de una tarea específica por su ID.
Nuestro objetivo ahora es lograr que, cuando el usuario haga clic en un botón dentro de una tarjeta de tarea, la aplicación navegue a una página de detalles. El TaskDetailsComponent luego recuperará el ID de la tarea desde la URL y lo utilizará para obtener los datos completos de la tarea.
No estamos pasando datos directamente entre componentes. En su lugar, aprovechamos Angular Router: pasamos el ID de la tarea a través de la URL y el componente utiliza ese ID para obtener la tarea desde un servicio.
Cómo interactúan los componentes
Definamos cómo funcionará esta interacción de enrutamiento.
Agregaremos un botón dentro de TaskComponent. Cuando se haga clic, el componente emitirá un evento al componente padre (TaskListComponent). El padre gestionará la navegación actualizando la URL, lo que hace que Angular cargue TaskDetailsComponent para la tarea seleccionada.
¿Por qué no enrutar directamente desde TaskComponent?
Si alguna vez queremos reutilizar TaskComponent en otro lugar (por ejemplo, en un modal o en una lista diferente), no queremos que esté vinculado a la lógica de enrutamiento. En su lugar, simplemente debe notificar al padre que se solicita una acción de navegación.
Este enfoque es más fácil de probar y leer, mantiene la lógica de enrutamiento centralizada y asegura que TaskComponent permanezca limpio y enfocado en sus responsabilidades.
Implementación de TaskComponent
La función principal de TaskComponent es emitir eventos a su componente padre. Agregaremos un botón a la plantilla que llame a navigateToTask(), el cual emitirá el evento.
task-component.ts
task-component.html
task-component.css
Cuando el usuario hace clic en el botón de información, el método navigateToTask() emite el ID de la tarea. Este evento es capturado por el componente padre (TaskListComponent), que luego gestiona la navegación utilizando el enrutador de Angular.
Implementación de TaskListComponent
Este componente es responsable de la navegación a la página de detalles de la tarea.
Para ello, se utiliza el servicio integrado Router de Angular, que permite cambiar la URL de forma programática y cargar el componente correspondiente según la ruta.
task-list-component.ts
task-list-component.html
Agregamos el servicio Router en el constructor. Angular proporciona este servicio automáticamente al crear el componente, por lo que no se necesita configuración adicional.
También configuramos un escuchador de eventos para (onNavigate), que activa el método navigateToTask() .
Cuando se llama al método (por ejemplo, cuando el usuario hace clic en el botón de información), construye la ruta /task/3, y el router actualiza la URL y carga el TaskDetailsComponent.
Recuperación de una tarea por ID en TaskDetailsComponent
Cuando el usuario navega a la ruta /task/:id, Angular carga el TaskDetailsComponent. Este componente es responsable de:
-
Obtener el ID de la URL;
-
Buscar la tarea correspondiente por su ID;
-
Mostrar los detalles de la tarea en pantalla.
Así es como funciona:
task-details-component.ts
task-details-component.html
task-details-component.css
Explicación:
El servicio ActivatedRoute permite acceder a los parámetros de la ruta actual.
-
Se utiliza
snapshot.paramMap.get('id')para extraer el valor deidde la URL; -
Luego, se convierte a un número y se pasa a
getTaskById(id)delTaskServicepara recuperar la tarea; -
El método
goToHomePage()navega de regreso a la página principal donde se muestra la lista completa de tareas.
Así, utilizando Angular Router, se ha configurado correctamente la navegación entre componentes y el paso de datos mediante un parámetro en la URL. El TaskListComponent gestiona la navegación por ID de tarea, y el TaskDetailsComponent lee el ID de la ruta y carga la tarea correspondiente.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Comunicación entre Componentes y Navegación
Desliza para mostrar el menú
Aprenderá cómo configurar correctamente la navegación dentro de su aplicación Angular y cómo pasar datos entre componentes utilizando la URL.
Ya tenemos dos rutas configuradas:
-
/— muestra la lista de todas las tareas; -
/task/:id— muestra los detalles de una tarea específica por su ID.
Nuestro objetivo ahora es lograr que, cuando el usuario haga clic en un botón dentro de una tarjeta de tarea, la aplicación navegue a una página de detalles. El TaskDetailsComponent luego recuperará el ID de la tarea desde la URL y lo utilizará para obtener los datos completos de la tarea.
No estamos pasando datos directamente entre componentes. En su lugar, aprovechamos Angular Router: pasamos el ID de la tarea a través de la URL y el componente utiliza ese ID para obtener la tarea desde un servicio.
Cómo interactúan los componentes
Definamos cómo funcionará esta interacción de enrutamiento.
Agregaremos un botón dentro de TaskComponent. Cuando se haga clic, el componente emitirá un evento al componente padre (TaskListComponent). El padre gestionará la navegación actualizando la URL, lo que hace que Angular cargue TaskDetailsComponent para la tarea seleccionada.
¿Por qué no enrutar directamente desde TaskComponent?
Si alguna vez queremos reutilizar TaskComponent en otro lugar (por ejemplo, en un modal o en una lista diferente), no queremos que esté vinculado a la lógica de enrutamiento. En su lugar, simplemente debe notificar al padre que se solicita una acción de navegación.
Este enfoque es más fácil de probar y leer, mantiene la lógica de enrutamiento centralizada y asegura que TaskComponent permanezca limpio y enfocado en sus responsabilidades.
Implementación de TaskComponent
La función principal de TaskComponent es emitir eventos a su componente padre. Agregaremos un botón a la plantilla que llame a navigateToTask(), el cual emitirá el evento.
task-component.ts
task-component.html
task-component.css
Cuando el usuario hace clic en el botón de información, el método navigateToTask() emite el ID de la tarea. Este evento es capturado por el componente padre (TaskListComponent), que luego gestiona la navegación utilizando el enrutador de Angular.
Implementación de TaskListComponent
Este componente es responsable de la navegación a la página de detalles de la tarea.
Para ello, se utiliza el servicio integrado Router de Angular, que permite cambiar la URL de forma programática y cargar el componente correspondiente según la ruta.
task-list-component.ts
task-list-component.html
Agregamos el servicio Router en el constructor. Angular proporciona este servicio automáticamente al crear el componente, por lo que no se necesita configuración adicional.
También configuramos un escuchador de eventos para (onNavigate), que activa el método navigateToTask() .
Cuando se llama al método (por ejemplo, cuando el usuario hace clic en el botón de información), construye la ruta /task/3, y el router actualiza la URL y carga el TaskDetailsComponent.
Recuperación de una tarea por ID en TaskDetailsComponent
Cuando el usuario navega a la ruta /task/:id, Angular carga el TaskDetailsComponent. Este componente es responsable de:
-
Obtener el ID de la URL;
-
Buscar la tarea correspondiente por su ID;
-
Mostrar los detalles de la tarea en pantalla.
Así es como funciona:
task-details-component.ts
task-details-component.html
task-details-component.css
Explicación:
El servicio ActivatedRoute permite acceder a los parámetros de la ruta actual.
-
Se utiliza
snapshot.paramMap.get('id')para extraer el valor deidde la URL; -
Luego, se convierte a un número y se pasa a
getTaskById(id)delTaskServicepara recuperar la tarea; -
El método
goToHomePage()navega de regreso a la página principal donde se muestra la lista completa de tareas.
Así, utilizando Angular Router, se ha configurado correctamente la navegación entre componentes y el paso de datos mediante un parámetro en la URL. El TaskListComponent gestiona la navegación por ID de tarea, y el TaskDetailsComponent lee el ID de la ruta y carga la tarea correspondiente.
¡Gracias por tus comentarios!