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
RouterModulepara 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
/aboutque 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
/contactque cargue elContactComponent. - Añade un enlace de navegación al
ContactComponenten 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
