Las directivas en Angular permiten manipular datos y vistas de forma clara y eficiente. Aquí verás cómo los componentes, las directivas estructurales y las de atributos trabajan juntas para actualizar el DOM sin duplicar código, con énfasis en ngFor para listas dinámicas.
¿Qué son las directivas en Angular y cuántos tipos hay?
Las directivas son instrucciones que Angular aplica sobre elementos de HTML para cambiar su comportamiento o representación. Existen tres tipos principales y cada una cumple un rol clave.
Componentes: siempre tienen una template de HTML asociada.
Directivas estructurales: modifican el DOM para mostrar, ocultar o repetir elementos. Ejemplo: ngFor para iteraciones.
Directivas de atributos: ajustan la apariencia o comportamiento del elemento al que están asignadas. Por ejemplo, marcar en una lista si es perro o gato con un fondo distinto.
La idea central: evitar escribir miles de líneas de HTML y, en su lugar, declarar datos en TypeScript y dejar que Angular los pinte en pantalla.
¿Cómo usar ngFor para listar datos sin duplicar código?
Con ngFor puedes repetir un elemento de lista tantas veces como haya elementos en un arreglo. Ideal para directorios extensos, como “12 000 personas” o cientos de negocios, sin escribir cada ítem a mano.
¿Cómo preparar los datos en TypeScript?
Primero, define un arreglo en el componente. Se usa un arreglo de objetos con una propiedad nombre. Mantén el constructor y el title si ya existen.
Usar tipo any[] para aceptar cualquier objeto, tal como se mostró.
Cada elemento del arreglo representa un negocio con su nombre.
¿Cómo iterar en HTML con ngFor?
Crea una lista no ordenada y repite el ítem con la directiva estructural. Nota: las directivas estructurales empiezan con asterisco y su nombre va en camelCase.
<ul><li*ngFor="let lugar of lugares"> {{ lugar.nombre }}
</li></ul>
Sintaxis y conceptos:
Asterisco al inicio: indica directiva estructural.
let lugar: declara una variable por iteración.
of lugares: recorre el arreglo lugares.
{{ ... }}: usa string interpolation para mostrar lugar.nombre.
¿Qué ventajas trae en listas grandes?
Menos HTML: una sola línea repite tantos elementos como haya en el arreglo.
Mantenimiento simple: agregas o quitas datos en TypeScript, la vista se actualiza.
Claridad: la lógica de iteración queda declarativa, sin for manual ni manipulación del DOM.
¿Cómo ayudan las directivas de atributo a dar contexto visual?
Las directivas de atributos permiten comunicar estado o categoría con estilo visual. Por ejemplo, en una lista de mascotas de una guardería, se puede decidir que “perritos” lleven fondo café y “gatitos” fondo azul para identificar rápidamente.
Ideas clave:
Se configuran mediante un atributo en el HTML del elemento objetivo.
Controlan cómo “se despliega” o “qué hace” el elemento.
Complementan a ngFor para mostrar grandes listas con señales visuales claras.
¿Te gustaría ver también un ejemplo con ngIf y estilos condicionales en tu proyecto? Comparte tus dudas y casos de uso en los comentarios.
Pregunta: Si uno de los elementos del que voy a imprimir en el bucle quiero darle una clase concreta de CSS, y solo a uno. ¿Cómo lo hago? ¿Podría anidar un ngIf dentro de un ngFor?
Si siempre vas a poder usar otras directivas dentro del ngFor, podes preguntar por el $index para saber cuando es el “x” elemento. ($index = posición en el array)
Hola a todos,
pregunta: se necesita algún plugin o herramienta adicional para que funcione el *ngFor en atom??, es que tengo el código igual que el profe y no me da, muchas gracias.
No te funciona o no te auto completa? puedes instalar plugins en atom que te ayuden con el autocompletado y con coloreado de sintaxis, pero no me queda claro la parte que no te funciona en atom.
export class AppComponent {
title = ‘platzisquare’;
lugares:any = [
{nombre:‘floreria la gardenia’},
{nombre:‘donas la pasadita’},
{nombre:‘veterinaria huellitas’},
];
constructor(){
}
}
y en el html se ingreso así:
<ul>
<li \*ngFor = “let lugar of lugares”>{{lugares.nombre}} </li>
</ul>
tal y como dice el profe, pero cuando se compila y lo visualizo no me lo muestra como el ejemplo, de ahí la pregunta: si atom necesitaría alguna herramienta para que lea o reconozca TS? o si tengo algún error de sintaxis , muchas gracias por tu ayuda.
Lo que se me ocurre sin ver el código es que tengas mal escrita la ruta del llamado de app.component.css recuerda que debe ser así: ./app.component.css
ngFor: Directiva estructural que permite recorrer diferentes elementos de un arreglo
TS
lugares:any =[{nombre:'Florería la gardenia'},{nombre:'Donas la pasadita'},{nombre:'Veterinaria huellas'},];
html
<ul><li *ngFor="let lugar of lugares">{{lugar.nombre}}</li></ul>
Importante: Es necesario definir el arreglo como "any" porque puede esperar cualquier tipo de dato en un futuro (si trabajamos con servicios en el backend por ejemplo)
lugares es el array de elementos y lugar es el elemento del array que esta en ese momento en la iteración, el let lugar of lugares es un ciclo for donde cada elemento de lugares es asignado a la variable lugar durante esa iteración del ciclo.
Pueda dar un error ya que no sabe que tipo de objeto manejar, siempre recuerda que debes programar para tu yo del futuro, entre más explicito seas con tu código el día que le tengas que dar mantenimiento va a ser sencillo porque con solo leer el código entiendes que hiciste, muchas veces hay soluciones para problemas que son algo complejas y en un año o dos que quieras hacerle algún cambio no vas a recordar porque hiciste eso de esa forma.
Concepto de directivas estructurales: son directivas que usamos para modificar el dom mediante rutinas programables, por ejemplo una estructura de repeticion como en el caso del ngFor.
Un ngFor es una especie de forEach en donde definimos una variable de un conjunto de elementos y usamos los elementos del recorrido por medio de String interpolation
<ul><li *ngFor="let lugar of lugares">{{lugar.nombre}}</li></ul>