Iván Larios

Nada mejor que un challenge para mejorar tus habilidades, el limite eres tú.

Categorías

Listar elementos en Angular con ngFor

Categorías: Angular/Etiquetas: , , , , /

Existen distintas directivas en angular que nos ayudaran a renderizar ciertos elementos que suelen ser muy comunes en el dia a dia, dentro de esas directivas esta ngFor, esta directiva permite renderizar cada elemento dentro de un array, puedes ser un array de strings, enteros, fechas, etc. o de elementos mas complejos como un objeto que tiene distintas propiedades, veamos un ejemplo de como seria sin utilizar ngFor y como seria utilizando esta directiva.

Propiedades

La directiva ngFor cuenta con las siguientes propiedades:

  • ngForOf: Es el array donde se alimentara la directiva

  • let-{name}:{name} sera el nombre del elemento a utilizar dentro de la iteración de cada elemento

  • let-i: es el index del elemento dentro del array

  • ngForTrackBy: permite definir el identificador con el que se renderizáran los elementos, ya que habrá elementos que no cambien en listas dinamicás, mejorara la velocidad y experiencia del usuario

  • count: Muestra el total de elementos en el array

  • first: regresa true si un elemento es el primero

  • last: regresa true si el elemento es el ultimo del array

  • even: regresa true si el index del elemento es par

  • odd: regresa true si el index del elemento es un impar

Cada uno de las propiedades antes listadas permite que la directiva ngFor no solo la utilicemos para iterar un array, si no que podamos identificar si un elemento es el primero o el ultimo, esto nos puede ayudar en escenarios donde necesitamos darle importancia a elementos que esten al principio de la lista o menor importancia a los que esten al final. Asu vez tener la propiedad de count, nos ayudara en algunos casos a no tener un método para contar los elemento si no que la directiva ya no las devuelve.

Sintaxis

La sintaxis de la directiva ngFor puede variar segun la forma en como queramos emplearla, podemos utilizarla por propiedad o directamente todo en la misma linea, particularmente la segunda se me hace mas efectiva ya que permite describir en una sola propiedad lo que vamos a emplear de la directiva, aunque si estas comenzando con angular la primer forma te ayudara a entender mejor la directiva.

Forma Resumida
Copy to Clipboard
Forma en base a propiedades
Copy to Clipboard

Ejemplos sin emplear ngFor y usando ngFor

Ejemplo sin ngFor

Copy to Clipboard
Ejemplo con ngFor sintaxis
Copy to Clipboard
Resultado de ngFor
Copy to Clipboard

Como puedes observar si utilizamos la sintaxis de ngFor permite que podamos iterar sin necesidad de que nosotros estemos repitiendo el elemento como en el primer caso, puede parecer simple, ya que si solo tenemos 5 elementos pues copiar y pegar es sencillo, pero si tenemos una lista de mas de 100 elementos o elementos dinámicos, asignarle la tarea a ngFor será una tarea mas sencilla.

Ejemplo de Lista de Tareas

En este ejemplo veremos como crear una lista de tareas, teniendo un identificador, un titulo de la tarea, la fecha a realizar la tarea y por ultimo la prioridad de cada tarea, en este caso este es es el ejemplo donde la directiva ngFor toma mayor relevancia, ya que podemos hablar que el elemento puede obtener los datos desde un servicio web.

Para crear una lista de tareas necesitamos cuatro elementos y uno extra:

  • La interface que debe cumplirse para iterar el conjunto de tareas
  • El array de tareas que implementa la interface
  • El Código HTML que permitirá crear cada una de las tareas y el contenedor
  • El SASS o CSS que le dara estilo a la lista
  • (Extra) Para nuestro caso agregaremos un ENUM para mapear los distintos status de la tarea

status.enum.ts

Copy to Clipboard

itask.interface.ts

Copy to Clipboard

task.component.ts

Copy to Clipboard

task.component.html

Copy to Clipboard

task.component.scss

Copy to Clipboard

Este es un ejemplo muy sencillo pero muy común cuando quieres desplegar listas de elementos o itererar objetos, recuerda que por ultimo, este es un componente asi que puedes agregarlos a tu repertorio de componentes, si aun no sabes como crear una biblioteca con angular, no te pierdas los siguientes artículos.

Array