Guía de Angular: RouterLink, control flow, ngClass y comunicación entre componentes

Cuando trabajas con Angular, dominar RouterLink y el control flow no solo es una ventaja, es prácticamente obligatorio para construir aplicaciones dinámicas y fáciles de navegar. En este artículo, vamos a desglosar desde lo básico hasta ejemplos más avanzados que te ayudarán a mejorar tu flujo de trabajo y hacer que tus interfaces sean más intuitivas. Además, integraremos conceptos como ngClass, ngStyle, comunicación entre componentes y nuevas directivas que Angular ha incorporado para simplificar la vida del desarrollador.


Introducción a Angular RouterLink y control flow

En Angular, RouterLink es la forma más limpia y directa de enlazar vistas dentro de tu aplicación SPA (Single Page Application). No hablamos de enlaces HTML tradicionales, sino de un sistema que interactúa con el enrutador de Angular para cargar componentes sin recargar la página.

Por otro lado, el control flow ha evolucionado para ser más legible, expresivo y con mejor rendimiento, gracias a nuevas directivas como @for y @if, que sustituyen patrones repetitivos.

Si todavía no has dado el paso inicial en Angular, te recomiendo leer esta guía para empezar con Angular desde cero, que sienta las bases antes de meterse en temas más avanzados.


Angular RouterLink: qué es y cómo usarlo en tus proyectos

RouterLink permite enlazar rutas declaradas en el RouterModule directamente desde tus plantillas HTML.
En lugar de usar un href que recargue la página, usamos:

<a [routerLink]="['/ruta']">Ir a la ruta</a>

Esto le indica a Angular que maneje la navegación de forma interna, optimizando tiempos de carga y ofreciendo una experiencia fluida.


En Angular moderno (standalone), no se importa con default, sino como export nombrado y se añade en imports del componente raíz junto a RouterOutlet.

app.component.ts

import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { NavbarComponent } from './components/shared/navbar/navbar.component';

@Component({
selector: 'app-root',
standalone: true,
imports: [RouterOutlet, NavbarComponent],
templateUrl: './app.component.html',
})
export class AppComponent {}

app.component.html

<app-navbar></app-navbar>
<router-outlet></router-outlet>

navbar.component.ts (standalone)

import { Component } from '@angular/core';
import { RouterModule } from '@angular/router';

@Component({
selector: 'app-navbar',
standalone: true,
imports: [RouterModule], // Para usar [routerLink] y routerLinkActive
templateUrl: './navbar.component.html',
})
export class NavbarComponent {}

Con esta estructura, <router-outlet> va debajo del navbar para que el contenido cambie según la ruta mientras el menú permanece fijo, garantizando una experiencia consistente.

Si tu proyecto usa NgModule, declara NavbarComponent en AppModule, importa RouterModule.forRoot(routes) y coloca el mismo HTML anterior en la plantilla principal.


Usar RouterLink Active dentro del control flow de Angular

Con RouterLinkActive, Angular añade una clase CSS a un enlace cuando la ruta actual coincide. Esto es perfecto para resaltar visualmente el enlace activo:

<a [routerLink]="['/inicio']" routerLinkActive="activo">Inicio</a>

Puedes incluso añadir múltiples clases o utilizar expresiones booleanas para activar estilos condicionalmente. Esto ayuda a orientar al usuario en todo momento.


Control flow en Angular: ejemplos prácticos y buenas prácticas

Angular ha introducido un nuevo sistema de control flow que mejora la legibilidad del código y reduce el uso de directivas antiguas. En lugar de *ngFor o *ngIf, ahora puedes usar @for y @if directamente en la plantilla.


Ejemplo de control flow con signal<Movie[]>

Supongamos que tenemos un listado de películas que queremos mostrar en la interfaz. Podemos declarar un signal en nuestro componente:

import { signal } from '@angular/core';

movies = signal<Movie[]>([
{ titulo: 'Inception', año: 2010 },
{ titulo: 'Interstellar', año: 2014 }
]);

Y en la plantilla:

@for (pelicula of movies(); track pelicula.titulo) {
<div>{{ pelicula.titulo }} ({{ pelicula.año }})</div>
}

Este patrón permite renderizar listas de forma más predecible, con menos código repetitivo y mejor rendimiento.
Para profundizar en cómo usar signals, te recomiendo el artículo Componente con signals en Angular: ejemplos prácticos explicados.


Directivas estructurales @for y @if en el control flow de Angular

Las nuevas directivas son más intuitivas y evitan errores comunes. Por ejemplo:

@if (usuario) {
<p>Bienvenido, {{ usuario.nombre }}</p>
} @else {
<p>Por favor, inicia sesión</p>
}

Esto elimina la sintaxis complicada de *ngIf con else y hace que el código sea más limpio y fácil de mantener.


ngClass, ngStyle y alternativas para el control de estilos en Angular

En Angular, ngClass y ngStyle son herramientas clave para aplicar estilos condicionalmente.

Ejemplo con ngClass:

<div [ngClass]="{ 'activo': isActive, 'inactivo': !isActive }">
Estado del elemento
</div>

Ejemplo con ngStyle:

<div [ngStyle]="{ 'color': isActive ? 'green' : 'red' }">
Texto con estilo dinámico
</div>

Si buscas mayor mantenibilidad, una alternativa es manejar clases y estilos desde el componente TypeScript, asignando valores a propiedades y enlazándolos en el HTML.


Comunicación entre componentes usando Angular RouterLink y control flow

La comunicación entre componentes es esencial en aplicaciones Angular escalables. Algunas estrategias comunes incluyen:

  • @Input() y @Output(): Comunicación directa entre padre e hijo.
  • Servicios con inyección de dependencias: Ideal para compartir datos entre componentes no relacionados.
  • EventBus o RxJS Subjects: Para eventos globales o más complejos.

En proyectos reales, se suele combinar varias de estas técnicas.
Puedes ver un ejemplo práctico en CRUD con Angular y TypeScript: primer proyecto paso a paso.


Conclusiones sobre Angular RouterLink y control flow en proyectos reales

Dominar Angular RouterLink y control flow no solo mejora la experiencia del usuario, sino que también permite trabajar más rápido y con menos errores.
Las nuevas directivas @for y @if simplifican el desarrollo, mientras que ngClass y ngStyle ofrecen control total sobre el aspecto visual.
Si combinas esto con buenas prácticas de comunicación entre componentes, estarás preparado para construir aplicaciones sólidas y fáciles de mantener.

Para ampliar tus conocimientos, te recomiendo la documentación oficial de Angular.

Compartir:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tabla de contenidos

Más posts

Categorías

Contáctame

Escríbeme a través del formulario. Estoy encantado de ayudarte con diseño web, contenido visual, redes o cualquier duda.