Directiva ngSwitch
Clase 18 de 80 • Curso de Angular 4
Contenido del curso
Introducción a Angular 4
Setup del Ambiente de Trabajo
Conceptos Básicos
- 9

Para qué nos sirven los Módulos y Componentes
08:10 min - 10

Tipos de Data Binding y String Interpolation
05:05 min - 11

Property Binding
06:04 min - 12

Event Binding
03:04 min - 13

ngModel y two way binding en Angular
05:12 min - 14

Directivas en Angular 4 y ngFor
07:39 min - 15

Cómo usar ngIf en Angular 4.0
03:04 min - 16

Instalando librerías con NPM (Google Maps)
06:48 min
Directivas
Angular UI
Ruteo
- 24

Qué hace el router en Angular 4
03:11 min - 25

Implementación de Rutas en el Proyecto
07:36 min - 26

Href vs router link: navegación angular
02:27 min - 27

Resaltando el link activo con CSS para indicar visualmente en que componente nos encontramos
01:53 min - 28

Parámetros de ruta con routerLink en Angular
06:01 min - 29

Parámetros tipo Query
03:53 min - 30

Creando una vista de detalle para el proyecto
09:06 min - 31

Página de contacto Angular desde cero
07:45 min
Servicios
- 32

Servicios en Angular para compartir datos
00:58 min - 33

Creando nuestro propio servicio
07:11 min - 34

Configurando Firebase en nuestro proyecto
05:12 min - 35

Guardando Records en Firebase
12:20 min - 36

Obteniendo records desde Firebase
08:40 min - 37

Obteniendo coordenadas usando Geocoding
13:45 min - 38

Reto: Crear una vista para editar records
09:29 min - 39

Mostrando marcadores en el Mapa de Google
03:02 min
Conexión Remota (Http y Sockets)
Pipes
Animaciones en Angular
Testing en Angular
Autenticación y Protección de Rutas
- 59

Cómo funcionan los JSON Web Tokens
03:05 min - 60

Preparación de vistas para login y registro
11:58 min - 61

Registrando usuarios
07:29 min - 62

Loggeando usuarios
07:18 min - 63

Guardias canActivate en Angular: Proteger rutas con autenticación
11:09 min - 64

Cómo integrar Facebook login con Firebase
09:08 min - 65

Logout en Angular con Firebase
05:28 min
RxJS
- 66

Cómo funciona RxJS con metáfora de oficina
02:09 min - 67

Mostrar email del usuario logueado en Angular
06:32 min - 68

Uso de los Observables
04:30 min - 69

Cómo implementar type ahead con Observables y RxJS
10:43 min - 70

Implementar formularios reactivos con type ahead
07:58 min - 71

Cómo rellenar campos automáticamente con Google
01:28 min
Publicando nuestro proyecto
Fin del curso
Sesiones en vivo
Contenido Bonus
Aprende a mostrar estados de cercanía de forma clara con Angular. Aquí verás cómo combinar ngSwitch (directiva de atributo) con ngSwitchCase (directiva estructural) y ngStyle para renderizar un único label por elemento y colorearlo según el nivel. Todo parte de un modelo con datos calculados en el servidor, eficiente para múltiples clientes.
¿Qué resuelve ngSwitch en una lista con cercanía?
La vista debe indicar si un lugar está muy cercano, cercano o lejano. Para ello, cada elemento tiene dos atributos definidos en el servidor: cercanía (niveles 1, 2, 3; 1 es más cercano, 3 más lejano) y distancia en kilómetros. El cálculo en el servidor es clave: se procesa una vez y queda disponible para un cliente de Angular, uno móvil o de escritorio. Así se mantiene consistencia y rendimiento.
- Un único estado visible por lugar: muy cercano, cercano o lejano.
- Niveles de cercanía: 1, 2 y 3; 1 es el más cercano.
- Distancia en km como dato auxiliar: 1, 1.8, 5, 10, 35, 120.
- Beneficio del servidor: cálculo centralizado para todos los clientes.
- Habilidades: elegir directiva correcta, modelar atributos, y comunicar estados con claridad.
¿Cómo luce el modelo de datos?
- Atributos por lugar: cercania (1–3). distancia (km).
- El servidor entrega estos campos ya calculados.
- La interfaz solo consume y muestra.
¿Cómo implementar ngSwitch y ngSwitchCase en Angular?
La directiva [ngSwitch] evalúa un valor y muestra solo el caso que coincide. Según se explica, no evalúa expresiones: debe haber un matching exacto o caer en un caso por defecto (default).
- [ngSwitch]: directiva de atributo que decide el valor a evaluar.
- ngSwitchCase: directiva estructural que agrega o remueve del DOM*.
- Estrategia: evaluar lugar.cercania y mostrar un único label.
<!-- lista de lugares -->
<div *ngFor="let lugar of lugares">
<div [ngSwitch]="lugar.cercania">
<span *ngSwitchCase="1">Muy cercano</span>
<span *ngSwitchCase="2">Cercano</span>
<span *ngSwitchCase="3">Lejano</span>
<!-- Si no hay coincidencia exacta, se usaría un caso por defecto. -->
</div>
</div>
Buenas prácticas. - Mantén el valor de [ngSwitch] simple: lugar.cercania. - Usa casos explícitos 1, 2 y 3. - Recuerda que solo se muestra un caso a la vez.
¿Cómo combinar ngSwitch con ngStyle para dar feedback visual?
Para reforzar la lectura visual, se colorean los labels: verde para “Muy cercano”, negro para “Cercano” y rojo para “Lejano”. Importante en ngStyle: la evaluación debe ser un objeto entre llaves, de lo contrario verás un error en el navegador tras un refresh.
<div *ngFor="let lugar of lugares">
<div [ngSwitch]="lugar.cercania">
<span *ngSwitchCase="1" [ngStyle]="{ color: 'green' }">Muy cercano</span>
<span *ngSwitchCase="2" [ngStyle]="{ color: 'black' }">Cercano</span>
<span *ngSwitchCase="3" [ngStyle]="{ color: 'red' }">Lejano</span>
</div>
</div>
Claves de implementación. - ngStyle es de atributo: espera un objeto con pares propiedad-valor. - color como propiedad CSS: 'green', 'black', 'red'. - Si olvidas las llaves en ngStyle, se produce un error.
¿Te gustaría ver un caso adicional por defecto o variar estilos según distancia? Cuéntalo en los comentarios y qué otros indicadores visuales usarías.