Uso de ngIf y ngFor para control de flujos en Angular

Clase 14 de 71Curso de Angular: Creación de Aplicaciones Web

Resumen

¿Cómo utilizar ng-if en Angular?

El ng-for en Angular te permite iterar sobre elementos, pero en ocasiones es fundamental controlar la renderización de elementos según ciertas condiciones. Aquí es donde entra el ng-if como estructura de control. Descubre cómo utilizar esta poderosa herramienta para manipular de manera dinámica tus componentes en Angular.

¿Qué es ng-if y cómo funciona?

El ng-if es un condicional en Angular que decide si un elemento debe ser renderizado o no. A diferencia de simplemente ocultar un elemento, si la condición del ng-if no se cumple, el elemento no será generado en el DOM. Veamos cómo implementarlo con un ejemplo sencillo:

<div *ngIf="1 === 1"> Este contenido se muestra porque la condición se cumple. </div>

Si la condición 1 === 1 es verdadera, el div se renderiza. Si cambiamos la condición a algo falso como 1 === 2, el div simplemente no aparecerá.

¿Cómo manejar condicionales más complejas?

Además de las condiciones simples, el ng-if permite usar expresiones complejas y anidaciones para crear lógica más rica. Supongamos que tienes una señal name y quieres renderizar contenido solo si el valor es "Nicolás":

<div *ngIf="name() === 'Nicolás'"> Soy Nicolás </div>

Es crucial recordar que estas comparaciones son case sensitive, por lo que "nicolás" no se consideraría igual a "Nicolás".

¿Cómo trabajar con objetos y señales?

Supongamos que tienes un objeto person con atributos, y quieras que su renderización responda de forma reactiva a sus valores. Convertimos el objeto en una señal y lo utilizamos en una condición:

const personSignal = signal({ name: 'Nicolás', age: 20 }); <div *ngIf="personSignal().name === 'Nicolás' && personSignal().age > 18"> Soy Nicolás y soy mayor de 18 </div>

Aquí, el contenido solo se renderizará si el nombre es "Nicolás" y la edad es mayor a 18.

¿Cómo implementar un else en ng-if?

Angular también permite manejar un else utilizando ng-template. Es decir, si la primera condición no se cumple, puedes definir qué contenido se mostrará:

<div *ngIf="condition; else elseBlock"> Esta es la condición verdadera. </div> <ng-template #elseBlock> Esta es la condición falsa. </ng-template>

Puedes modificar el contenido del else cambiando el nombre del bloque como requieras, utilizando #nombreDelBloque.

¿Cómo hacer adaptativo el contenido de ng-if?

Para hacer el contenido dinámico y reactivo, podemos enlazarlo a un input. Adicionalmente, para manejar la pluralización basada en la cantidad de elementos en una lista:

<!-- Input para modificar la edad --> <input type="number" (change)="changeAge($event)"> <!-- Control de pluralización --> <div *ngIf="items.length > 1"> {{ items.length }} items </div> <div *ngIf="items.length === 1"> 1 item </div>

Implementar la lógica de pluralización correctamente es un reto común. Intenta resolverlo evaluando el número de elementos en tu array y ajustando el texto para que corresponda en singular o plural.

A medida que domines estas herramientas, podrás crear aplicaciones Angular más dinámicas y efectivas. ¡Sigue experimentando y aprendiendo con las múltiples posibilidades que Angular te ofrece!

      Uso de ngIf y ngFor para control de flujos en Angular