En este tema, aprenderemos cómo configurar rutas en una aplicación Angular para permitir la navegación entre diferentes vistas o componentes. Angular Router es una herramienta poderosa que nos permite definir rutas y gestionar la navegación de manera eficiente.
Objetivos de Aprendizaje
- Comprender la importancia del enrutamiento en aplicaciones de una sola página (SPA).
- Configurar rutas básicas en una aplicación Angular.
- Navegar entre diferentes componentes utilizando el enrutador de Angular.
- Utilizar el módulo
RouterModule
para definir y gestionar rutas.
Conceptos Clave
¿Qué es el Enrutamiento?
El enrutamiento en Angular permite a los usuarios navegar entre diferentes vistas o componentes sin recargar la página. Esto es esencial para aplicaciones de una sola página (SPA), donde la experiencia del usuario debe ser fluida y rápida.
RouterModule
El RouterModule
es un módulo de Angular que proporciona las herramientas necesarias para configurar y gestionar rutas en una aplicación Angular.
Configuración Básica de Rutas
Paso 1: Importar RouterModule y Routes
Primero, necesitamos importar RouterModule
y Routes
desde @angular/router
en nuestro módulo principal (generalmente app.module.ts
).
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouterModule, Routes } from '@angular/router'; import { AppComponent } from './app.component'; import { HomeComponent } from './home/home.component'; import { AboutComponent } from './about/about.component'; const routes: Routes = [ { path: '', component: HomeComponent }, { path: 'about', component: AboutComponent } ]; @NgModule({ declarations: [ AppComponent, HomeComponent, AboutComponent ], imports: [ BrowserModule, RouterModule.forRoot(routes) ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Paso 2: Definir Rutas
En el ejemplo anterior, hemos definido dos rutas:
- La ruta raíz (
path: ''
) que carga elHomeComponent
. - La ruta
/about
que carga elAboutComponent
.
Paso 3: Configurar el Router Outlet
El RouterOutlet
es un marcador de posición en el HTML donde se renderizarán los componentes correspondientes a las rutas definidas.
<!-- app.component.html --> <nav> <a routerLink="/">Home</a> <a routerLink="/about">About</a> </nav> <router-outlet></router-outlet>
Paso 4: Navegar entre Rutas
Utilizamos la directiva routerLink
para definir enlaces de navegación en nuestra aplicación.
<!-- app.component.html --> <nav> <a routerLink="/">Home</a> <a routerLink="/about">About</a> </nav> <router-outlet></router-outlet>
Ejemplo Completo
app.module.ts
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouterModule, Routes } from '@angular/router'; import { AppComponent } from './app.component'; import { HomeComponent } from './home/home.component'; import { AboutComponent } from './about/about.component'; const routes: Routes = [ { path: '', component: HomeComponent }, { path: 'about', component: AboutComponent } ]; @NgModule({ declarations: [ AppComponent, HomeComponent, AboutComponent ], imports: [ BrowserModule, RouterModule.forRoot(routes) ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
app.component.html
<nav> <a routerLink="/">Home</a> <a routerLink="/about">About</a> </nav> <router-outlet></router-outlet>
home.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-home', template: `<h1>Home Component</h1>` }) export class HomeComponent { }
about.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-about', template: `<h1>About Component</h1>` }) export class AboutComponent { }
Ejercicio Práctico
Ejercicio
- Crea un nuevo componente llamado
ContactComponent
. - Define una nueva ruta
/contact
que cargue elContactComponent
. - Añade un enlace de navegación al
ContactComponent
en elapp.component.html
.
Solución
Paso 1: Crear el ContactComponent
Paso 2: Definir la Ruta
const routes: Routes = [ { path: '', component: HomeComponent }, { path: 'about', component: AboutComponent }, { path: 'contact', component: ContactComponent } ];
Paso 3: Añadir el Enlace de Navegación
<nav> <a routerLink="/">Home</a> <a routerLink="/about">About</a> <a routerLink="/contact">Contact</a> </nav> <router-outlet></router-outlet>
Resumen
En esta sección, hemos aprendido cómo configurar rutas básicas en una aplicación Angular utilizando el RouterModule
. Hemos visto cómo definir rutas, configurar el RouterOutlet
y navegar entre diferentes componentes. Con estos conocimientos, estamos listos para explorar conceptos más avanzados de enrutamiento en Angular.
Curso de Angular
Módulo 1: Introducción a Angular
- ¿Qué es Angular?
- Configuración del Entorno de Desarrollo
- Arquitectura de Angular
- Primera Aplicación Angular
Módulo 2: Componentes de Angular
- Entendiendo los Componentes
- Creación de Componentes
- Plantillas de Componentes
- Estilos de Componentes
- Interacción entre Componentes
Módulo 3: Enlace de Datos y Directivas
- Interpolación y Enlace de Propiedades
- Enlace de Eventos
- Enlace de Datos Bidireccional
- Directivas Incorporadas
- Directivas Personalizadas
Módulo 4: Servicios e Inyección de Dependencias
- Introducción a los Servicios
- Creación y Uso de Servicios
- Inyección de Dependencias
- Inyectores Jerárquicos
Módulo 5: Enrutamiento y Navegación
Módulo 6: Formularios en Angular
- Formularios Basados en Plantillas
- Formularios Reactivos
- Validación de Formularios
- Formularios Dinámicos
Módulo 7: Cliente HTTP y Observables
- Introducción al Cliente HTTP
- Realizando Solicitudes HTTP
- Manejo de Respuestas HTTP
- Uso de Observables
- Manejo de Errores
Módulo 8: Gestión de Estado
- Introducción a la Gestión de Estado
- Uso de Servicios para la Gestión de Estado
- NgRx Store
- NgRx Effects
- NgRx Entity
Módulo 9: Pruebas en Angular
- Pruebas Unitarias
- Pruebas de Componentes
- Pruebas de Servicios
- Pruebas de Extremo a Extremo
- Simulación de Dependencias
Módulo 10: Conceptos Avanzados de Angular
- Angular Universal
- Optimización del Rendimiento
- Internacionalización (i18n)
- Pipes Personalizados
- Animaciones en Angular