ANG_FRONT

Capítulo 8.8. Caso práctico: Routing en Angular

Objetivo de la práctica

Duración aproximada

Instrucciones

  1. Una página de inicio que muestra productos destacados.

  2. Una página de productos donde los usuarios pueden ver todos los productos disponibles.

  3. Una página de detalles de producto que muestra información específica sobre un producto seleccionado.

  4. Una página de contacto.


src/
|-- app/
|   |-- components/
|   |   |-- home/
|   |   |-- products/
|   |   |-- product-detail/
|   |   |-- contact/
|   |-- app-routing.module.ts
|   |-- app.component.ts
|   |-- app.module.ts
|-- assets/
|-- environments/

  1. Paso 1: Crear los Componentes.

ng generate component components/home
ng generate component components/products
ng generate component components/product-detail
ng generate component components/contact
  1. Paso 2: Configurar el AppRoutingModule.

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { ProductsComponent } from './components/products/products.component';
import { ProductDetailComponent } from './components/product-detail/product-detail.component';
import { ContactComponent } from './components/contact/contact.component';

const routes: Routes = [
  { path: '', redirectTo: '/home', pathMatch: 'full' },
  { path: 'home', component: HomeComponent },
  { path: 'products', component: ProductsComponent },
  { path: 'product/:id', component: ProductDetailComponent },
  { path: 'contact', component: ContactComponent },
  { path: '**', redirectTo: '/home' } // Ruta no encontrada
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
  1. Paso 3: Implementar el Router Outlet

<nav>
  <a routerLink="/home">Home</a>
  <a routerLink="/products">Products</a>
  <a routerLink="/contact">Contact</a>
</nav>
<router-outlet></router-outlet>
  1. Paso 4: Acceso a parámetros de ruta.

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-product-detail',
  template: `
    <h2>Detalles del Producto</h2>
    <p>ID del Producto: </p>
  `
})
export class ProductDetailComponent implements OnInit {
  productId!: string;

  constructor(private route: ActivatedRoute) {}

  ngOnInit() {
    this.route.paramMap.subscribe(params => {
      this.productId = params.get('id')!;
    });
  }
}
  1. Paso 5: Navegación entre componentes.

<h2>Lista de Productos</h2>
<ul>
  <li><a [routerLink]="['/product', 1]">Producto 1</a></li>
  <li><a [routerLink]="['/product', 2]">Producto 2</a></li>
</ul>
  1. Paso 6: Estilo y Diseño.