En Angular, se pueden utilizar diferentes métodos para implementar estructuras de repetición, especialmente cuando se trata de mostrar listas o datos dinámicos en las vistas. El bucle for en Angular generalmente se implementa mediante la directiva ngFor en el HTML, aunque también existen maneras de realizar un bucle directamente en TypeScript cuando se necesita manipular datos antes de renderizarlos.
ngFor en Angular
ngFor es una directiva estructural de Angular que permite iterar sobre una colección y mostrar los elementos en la plantilla. Es muy común en casos donde se necesita renderizar una lista de elementos en el DOM.
ngFor
<div *ngFor="let item of items">
{{ item }}
</div>
1. let item of items: Aquí items es el array que contiene los elementos que deseas iterar. item representa cada elemento del array en cada iteración.
2. {{ item }}: Se utiliza para mostrar el valor del elemento actual en la plantilla.
// En el componente TypeScript
export class AppComponent {
items = ['Elemento 1', 'Elemento 2', 'Elemento 3'];
}
<!-- En la plantilla HTML -->
<ul>
<li *ngFor="let item of items">{{ item }}</li>
</ul>
ngFor
Puedes obtener el índice de cada elemento en ngFor usando index y acceder a propiedades de objetos de manera directa:
<div *ngFor="let producto of productos; let i = index">
<p>Producto {{ i + 1 }}: {{ producto.nombre }} - Precio: {{ producto.precio }}</p>
</div>
ngFor
Angular permite aplicar clases condicionales y estilos dentro de un bucle:
<div *ngFor="let producto of productos" [class.destacado]="producto.destacado">
{{ producto.nombre }}
</div>
for en TypeScript en Angular
En situaciones donde necesitas procesar datos antes de mostrarlos en la vista, puedes usar bucles for en el archivo TypeScript:
export class AppComponent {
items = [];
constructor() {
for (let i = 0; i < 5; i++) {
this.items.push(`Elemento ${i + 1}`);
}
}
}
Luego puedes mostrar estos elementos con ngFor en el HTML.
Si necesitas usar bucles anidados, ngFor también permite anidar estructuras:
<div *ngFor="let categoria of categorias">
<h3>{{ categoria.nombre }}</h3>
<ul>
<li *ngFor="let producto of categoria.productos">{{ producto }}</li>
</ul>
</div>
Para más información, puedes consultar la documentación oficial de Angular sobre ngFor.
Jorge García
Fullstack developer