index - ¿Cuál es la diferencia entre[ngFor] y[ngForOf] en angular2?
ngfor index angular 5 (5)
En mi opinión, lo que obtuve del documento angular,
-
[ngFor]
no estype safe
-
[NgForOf]
estype safe
Porque ambos detalles de clase son un poco diferentes
ngFor
tipo de clase esany
tipoPero el detalle de la clase
ngForOf
esngForOf : NgIterable<T>
ngForOf
parece a los genéricos que ya he mencionado en mi pregunta.
Según mi entendimiento, ambos están haciendo las mismas funciones. Pero,
ngFor
¿ngFor
qué sería como collections ?ngForOf
sería trabajos como generics ?
Es mi entendimiento correcto? o ¿Podría compartir más diferencias (detalles) sobre
ngFor
yngForOf
?
NgFor puede iterar una matriz pero en ngContainer, ngContent no podemos iterar ngFor directamente, por lo que para iterar podemos usar [ngForOf]. Aquí yo soy variable, calificaciones es una matriz.
Ex.
<ng-template ngFor let-i [ngForOf]="ratings">
<option *ngIf="i<=22" [ngValue]="i">{{i}}:00 Hrs.</option>
</ng-template>
En este ejemplo, quiero aplicar un ngFor y ngIf al mismo tiempo, así que lo usé.
El otro punto de vista es que a un nivel normal si aplicamos ngFor entonces al renderizarlo lo convierte en
<template ngFor let-i [ngForOf]="ratings">
<HTML Element>...</HTML Element>
</template>
Versión explícita
-
(<template ngFor ...>)
permite aplicar la directiva a múltiples elementos a la vez
Versión implícita
- solo envuelve el elemento donde se aplica
ngFor
es una directiva estructural de Angular que reemplaza el atributo ng-repeat
de AngularJS
Puedes usar ngFor
como taquigrafía
<li *ngFor="let item of items">{{item.name}}</li>
o como la versión a mano
<template ngFor let-item="$implicit" [ngForOf]="items">
{{item.name}}
</template>
ngFor
y ngForOf
no son dos cosas distintas: en realidad son los selectores de la directiva NgForOf.
Si examina la source , verá que la directiva NgForOf tiene como selector: [ngFor][ngForOf]
, lo que significa que ambos atributos deben estar presentes en un elemento para que la directiva se "active", por así decirlo.
Cuando utiliza *ngFor
, el compilador angular *ngFor
esa sintaxis en su forma canónica que tiene ambos atributos en el elemento.
Asi que,
<div *ngFor="let item of items"></div>
Desaguas a:
<template [ngFor]="let item of items">
<div></div>
</template>
Esta primera eliminación de azúcar se debe a ''*''. La próxima eliminación de azúcar se debe a la micro sintaxis: "dejar elemento de artículos". El compilador angular elimina el azúcar de esa forma para:
<template ngFor let-item="$implicit" [ngForOf]="items">
<div>...</div>
</template>
(donde puede pensar en $ implícito como una variable interna que la directiva usa para referirse al ítem actual en la iteración).
En su forma canónica, el atributo ngFor es solo un marcador, mientras que el atributo ngForOf es en realidad una entrada a la directiva que apunta a la lista de cosas sobre las que desea iterar.
Puede consultar la guía de microsintaturas angulares para obtener más información.