En este tema, aprenderemos cómo manejar la navegación y el enrutamiento en una aplicación Ionic. La navegación es un aspecto crucial en cualquier aplicación móvil, ya que permite a los usuarios moverse entre diferentes vistas y funcionalidades. Ionic utiliza Angular Router para gestionar la navegación, lo que facilita la creación de rutas y la gestión del estado de la aplicación.
Contenidos
Conceptos Básicos de Navegación
La navegación en Ionic se basa en el enrutamiento de Angular. Aquí hay algunos conceptos clave:
- Rutas: Definen los caminos en la URL que llevan a diferentes componentes.
- Router Outlet: Un contenedor donde se cargan los componentes basados en la ruta activa.
- RouterLink: Una directiva que permite la navegación declarativa en las plantillas.
Configuración de Rutas
Para configurar las rutas en una aplicación Ionic, necesitamos definirlas en el archivo app-routing.module.ts. Aquí hay un ejemplo básico:
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
{
path: 'home',
loadChildren: () => import('./home/home.module').then(m => m.HomePageModule)
},
{
path: 'details',
loadChildren: () => import('./details/details.module').then(m => m.DetailsPageModule)
}
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule { }Explicación del Código
- Routes Array: Define un array de objetos de ruta. Cada objeto tiene un
pathy unloadChildrenque carga el módulo correspondiente. - RouterModule.forRoot: Configura el enrutador a nivel de aplicación.
- PreloadAllModules: Estrategia de precarga que carga todos los módulos de forma predeterminada.
Navegación Programática
Además de la navegación declarativa, también podemos navegar programáticamente usando el Router de Angular.
Ejemplo
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'app-home',
templateUrl: './home.page.html',
styleUrls: ['./home.page.scss'],
})
export class HomePage {
constructor(private router: Router) { }
navigateToDetails() {
this.router.navigate(['/details']);
}
}Explicación del Código
- Router: Inyectamos el servicio
Routeren el constructor. - navigateToDetails: Método que utiliza
this.router.navigatepara navegar a la página de detalles.
Pasar Datos entre Páginas
Podemos pasar datos entre páginas utilizando el estado de navegación o parámetros de ruta.
Usando Parámetros de Ruta
Envío de Datos
Recepción de Datos
import { ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute) {
this.route.params.subscribe(params => {
console.log(params['id']);
});
}Usando el Estado de Navegación
Envío de Datos
Recepción de Datos
import { Router } from '@angular/router';
constructor(private router: Router) {
const navigation = this.router.getCurrentNavigation();
const state = navigation.extras.state as { example: string };
console.log(state.example);
}Ejercicio Práctico
Objetivo
Crear una aplicación simple con dos páginas: Home y Details. La página Home tendrá un botón que navega a la página Details y pasa un mensaje.
Pasos
-
Crear Páginas: Usa el CLI de Ionic para generar las páginas.
ionic generate page home ionic generate page details -
Configurar Rutas: Añade las rutas en
app-routing.module.ts.const routes: Routes = [ { path: '', redirectTo: 'home', pathMatch: 'full' }, { path: 'home', loadChildren: () => import('./home/home.module').then(m => m.HomePageModule) }, { path: 'details', loadChildren: () => import('./details/details.module').then(m => m.DetailsPageModule) } ]; -
Navegación y Pasar Datos:
-
En
home.page.ts:import { Router } from '@angular/router'; constructor(private router: Router) { } navigateToDetails() { this.router.navigate(['/details'], { state: { message: 'Hello from Home!' } }); } -
En
home.page.html:<ion-button (click)="navigateToDetails()">Go to Details</ion-button> -
En
details.page.ts:import { Router } from '@angular/router'; constructor(private router: Router) { const navigation = this.router.getCurrentNavigation(); const state = navigation.extras.state as { message: string }; console.log(state.message); }
-
-
Verificar: Ejecuta la aplicación y verifica que la navegación y el paso de datos funcionen correctamente.
Resumen
En esta sección, hemos aprendido los conceptos básicos de la navegación y el enrutamiento en Ionic. Hemos configurado rutas, realizado navegación programática y pasado datos entre páginas. Estos conceptos son fundamentales para crear aplicaciones móviles complejas y bien estructuradas. En el próximo módulo, exploraremos los componentes básicos de Ionic y cómo utilizarlos para construir interfaces de usuario atractivas y funcionales.
Curso de Desarrollo con Ionic
Módulo 1: Introducción a Ionic
- ¿Qué es Ionic?
- Configuración del Entorno de Desarrollo
- Creando Tu Primera Aplicación Ionic
- Entendiendo la Estructura del Proyecto
- Ejecutando y Depurando Tu Aplicación
Módulo 2: Componentes Básicos y Navegación
- Visión General de los Componentes de Ionic
- Usando Botones e Iconos de Ionic
- Creando y Usando Páginas
- Navegación y Enrutamiento
- Pestañas y Menús Laterales
Módulo 3: Estilización y Tematización
- Introducción a la Estilización en Ionic
- Usando CSS y SCSS en Ionic
- Tematizando Tu Aplicación Ionic
- Diseño Responsivo en Ionic
- Personalizando Componentes de Ionic
Módulo 4: Trabajando con Datos
- Introducción a la Vinculación de Datos
- Usando Servicios de Angular
- Solicitudes HTTP y APIs
- Almacenando Datos Localmente
- Usando Ionic Storage
Módulo 5: Componentes y Funcionalidades Avanzadas
- Usando Formularios de Ionic
- Validación y Manejo de Errores
- Usando Plugins Nativos de Ionic y Cordova
- Accediendo a Funcionalidades del Dispositivo
- Notificaciones Push
Módulo 6: Pruebas y Despliegue
- Pruebas Unitarias en Ionic
- Pruebas de Extremo a Extremo
- Construyendo para Producción
- Desplegando en Tiendas de Aplicaciones
- Integración y Entrega Continua
