En Angular, las rutas hijas permiten crear rutas anidadas dentro de una aplicación. Esto es útil para estructurar la navegación de manera jerárquica y modular, facilitando la organización y el mantenimiento del código. En esta sección, aprenderemos cómo configurar y utilizar rutas hijas en Angular.
Conceptos Clave
- Rutas Hijas: Son rutas que están anidadas dentro de una ruta principal.
- Router Outlet: Un contenedor en el cual se cargan los componentes de las rutas hijas.
- Configuración de Rutas: Definir las rutas hijas en el archivo de configuración de rutas.
Configuración de Rutas Hijas
Para configurar rutas hijas, primero necesitamos definirlas en el archivo de configuración de rutas. Supongamos que tenemos una aplicación con una ruta principal admin
y queremos agregar rutas hijas para dashboard
y settings
.
Paso 1: Crear Componentes
Primero, creamos los componentes necesarios para las rutas hijas.
ng generate component admin ng generate component admin/dashboard ng generate component admin/settings
Paso 2: Definir las Rutas Hijas
En el archivo de configuración de rutas (app-routing.module.ts
), definimos las rutas hijas dentro de la ruta principal admin
.
import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { AdminComponent } from './admin/admin.component'; import { DashboardComponent } from './admin/dashboard/dashboard.component'; import { SettingsComponent } from './admin/settings/settings.component'; const routes: Routes = [ { path: 'admin', component: AdminComponent, children: [ { path: 'dashboard', component: DashboardComponent }, { path: 'settings', component: SettingsComponent } ]} ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
Paso 3: Configurar el Router Outlet
En el componente principal admin.component.html
, agregamos un <router-outlet>
para que las rutas hijas se carguen dentro de este contenedor.
<h2>Admin Area</h2> <nav> <a routerLink="dashboard">Dashboard</a> <a routerLink="settings">Settings</a> </nav> <router-outlet></router-outlet>
Paso 4: Navegar entre Rutas Hijas
Ahora podemos navegar entre las rutas hijas utilizando los enlaces definidos en el componente admin.component.html
.
Ejemplo Completo
A continuación, se muestra un ejemplo completo de cómo configurar y utilizar rutas hijas en Angular.
Estructura de Archivos
src/ ├── app/ │ ├── admin/ │ │ ├── admin.component.html │ │ ├── admin.component.ts │ │ ├── dashboard/ │ │ │ ├── dashboard.component.html │ │ │ ├── dashboard.component.ts │ │ ├── settings/ │ │ ├── settings.component.html │ │ ├── settings.component.ts │ ├── app-routing.module.ts │ ├── app.component.html │ ├── app.component.ts │ ├── app.module.ts
Código de Ejemplo
admin.component.html
<h2>Admin Area</h2> <nav> <a routerLink="dashboard">Dashboard</a> <a routerLink="settings">Settings</a> </nav> <router-outlet></router-outlet>
app-routing.module.ts
import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { AdminComponent } from './admin/admin.component'; import { DashboardComponent } from './admin/dashboard/dashboard.component'; import { SettingsComponent } from './admin/settings/settings.component'; const routes: Routes = [ { path: 'admin', component: AdminComponent, children: [ { path: 'dashboard', component: DashboardComponent }, { path: 'settings', component: SettingsComponent } ]} ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
admin.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-admin', templateUrl: './admin.component.html', styleUrls: ['./admin.component.css'] }) export class AdminComponent { }
dashboard.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-dashboard', templateUrl: './dashboard.component.html', styleUrls: ['./dashboard.component.css'] }) export class DashboardComponent { }
settings.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-settings', templateUrl: './settings.component.html', styleUrls: ['./settings.component.css'] }) export class SettingsComponent { }
Ejercicio Práctico
Ejercicio
- Crea un nuevo componente llamado
profile
dentro del móduloadmin
. - Agrega una ruta hija para
profile
en la configuración de rutas. - Actualiza el componente
admin
para incluir un enlace de navegación aprofile
.
Solución
Paso 1: Crear el Componente
Paso 2: Definir la Ruta Hija
const routes: Routes = [ { path: 'admin', component: AdminComponent, children: [ { path: 'dashboard', component: DashboardComponent }, { path: 'settings', component: SettingsComponent }, { path: 'profile', component: ProfileComponent } // Nueva ruta hija ]} ];
Paso 3: Actualizar el Componente admin.component.html
<h2>Admin Area</h2> <nav> <a routerLink="dashboard">Dashboard</a> <a routerLink="settings">Settings</a> <a routerLink="profile">Profile</a> <!-- Nuevo enlace de navegación --> </nav> <router-outlet></router-outlet>
Conclusión
Las rutas hijas en Angular permiten crear una estructura de navegación jerárquica y modular. Al entender cómo configurar y utilizar rutas hijas, puedes organizar mejor tu aplicación y mejorar la experiencia del usuario. En el siguiente tema, exploraremos los guardias de ruta, que te permitirán controlar el acceso a las rutas de tu aplicación.
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