Quelle est la différence entre [ngFor] et [ngForOf] dans angular2?
Selon ma compréhension, les Deux font la même fonctions. Mais,
-
ngFor
des œuvres comme collections? -
ngForOf
des œuvres comme les génériques?
Est ma compréhension est correcte? ou
Pourriez-vous s'il vous plaît partager plus de différence(les détails) surngFor
etngForOf
?
- Bonne question! je voulais aussi poser! btw, vos liens pour les deux collections et génériques sont les mêmes
- Faute de frappe question. Désolé pour ça. Maintenant, j'ai mis à jour ma question. merci
- github.com/angular/angular/commit/...
- bonne prise. Il semble que la classe était déjà NgFor et il a été changé dans le mouvement de l'angulaire de la v4, et l'essentiel, c'est que nous en tant que communauté étaient pas plus sage. Génial rétro-compatibilité
Vous devez vous connecter pour publier un commentaire.
ngFor
etngForOf
ne sont pas deux choses distinctes - ils sont en fait les sélecteurs de la NgForOf directive.Si vous examinez le source, vous verrez que le NgForOf directive a pour son sélecteur:
[ngFor][ngForOf]
, ce qui signifie que les deux attributs doivent être présents sur un élément de la directive "activer" pour ainsi dire.Lorsque vous utilisez
*ngFor
, l'angle de compilateur de sucres que de la syntaxe dans ses cannonical forme qui possède à la fois les attributs de l'élément.Donc,
desugars à:
Cette première de la miellée est due à la '*'. Le côté de la cabane à sucre est à cause de la micro-syntaxe: "laissez élément d'éléments". L'angle de compilateur de sucres que de:
(où vous pouvez penser à $implicite comme une variable interne de la directive utilise pour se référer à l'élément courant dans l'itération).
Dans sa forme canonique, le ngFor attribut est juste un marqueur, tandis que le ngForOf attribut est une entrée de la directive que les points à la liste des choses que vous voulez parcourir.
Vous pouvez consulter le Angulaire microsyntax guide pour en savoir plus.
ngFor
le réel directive, alors quengForOf
est "juste" une propriété de la "dé-sucrée" version?<template ngFor let-item="$implicit" [ngForOf]="items"> </template>
ngFor
est structurelle de la directive Angulaire qui remplace leng-repeat
attribut de AngularJSVous pouvez utiliser
ngFor
comme une abréviationou que la main de la version
shorthand
etlonghand
signifie pas la taille des données? ou quoi?ngForOf: NgIterable<T>: The value of the iterable expression. Useful when the expression is more complex then a property access, for example when using the async pipe (userStreams | async).
vraiment pas compréhensible.items
collection n'est pas une simple collection, mais plutôt une collection qui n'est pas encore disponible et ne sera disponible qu'après un certain appel asynchrone. Donc vous n'aurez pasitems
encore, mais seulement Observable ou de la Promesse (appelons futureItems). Dans ce cas, vous souhaitez utiliser la async pipelet item of (futureItems|async)
qui n'est pas possible. Mais vous pouvez utiliser le longhand version avec[ngForOf]="futureItems | async"
NgFor pouvez parcourir un tableau, mais dans ngContainer, ngContent nous ne pouvons itérer ngFor directement donc Pour l'itération nous
pouvez utiliser [ngForOf] . Ici, je est variable, notes, c'est un tableau.
Ex.
À cet exemple, je veux appliquer un ngFor et ngIf simultanément, je l'ai donc utilisé.
L'autre point de vue, est qu'à la normale si l'on applique ngFor puis au rendu il convertit en
À mon avis, ce que j'ai obtenu à partir de l'angle de document,
[ngFor]
n'est pastype safe
[NgForOf]
esttype safe
Parce que classe à la fois les détails sont peu différents
ngFor
Classe est de typeany
typeMais
ngForOf
classe de détail estngForOf : NgIterable<T>
ngForOf
ressemble génériques que j'ai déjà mentionné dans ma question.FormBuilder
, qui ne sont pas de type de vérification est troublant.Explicit version
(<template ngFor ...>)
permet d'appliquer la directive à plusieurs éléments à la foisImplicite version