Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Comunicación entre Componentes y Navegación | Enrutamiento y Navegación en Angular
Introducción a Angular

bookComunicació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.

Note
Nota

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.ts

task-component.html

task-component.html

task-component.css

task-component.css

copy

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.ts

task-list-component.html

task-list-component.html

copy

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.ts

task-details-component.html

task-details-component.html

task-details-component.css

task-details-component.css

copy

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 de id de la URL;

  • Luego, se convierte a un número y se pasa a getTaskById(id) del TaskService para 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.

question mark

¿Cuál es el propósito del método navigateToTask en el TaskListComponent?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 6. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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

bookComunicació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.

Note
Nota

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.ts

task-component.html

task-component.html

task-component.css

task-component.css

copy

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.ts

task-list-component.html

task-list-component.html

copy

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.ts

task-details-component.html

task-details-component.html

task-details-component.css

task-details-component.css

copy

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 de id de la URL;

  • Luego, se convierte a un número y se pasa a getTaskById(id) del TaskService para 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.

question mark

¿Cuál es el propósito del método navigateToTask en el TaskListComponent?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 6. Capítulo 4
some-alt