私の理解では、両方が同じ機能を実行しています。しかし、
ngFor
は collections ?のように動作します
ngForOf
は generics ?のように動作します
私の理解は正しいですか?または
ngFor
とngForOf
についての違い(詳細)を教えてください。
ngFor
とngForOf
は2つの異なるものではありません-実際にはNgForOfディレクティブのセレクターです。
source を調べると、NgForOfディレクティブのセレクターが[ngFor][ngForOf]
であることがわかります。つまり、ディレクティブを「アクティブ化」するには、両方の属性が要素に存在する必要があります。いわば。
*ngFor
を使用すると、Angularコンパイラーは、その構文を、要素に両方の属性を持つ標準的な形式に戻します。
そう、
<div *ngFor="let item of items"></div>
脱糖:
<template [ngFor]="let item of items">
<div></div>
</template>
この最初の脱糖は「*」によるものです。次のデシュガーは、マイクロ構文「アイテムのアイテムを許可」によるものです。 Angularコンパイラは、次のことを行います。
<template ngFor let-item="$implicit" [ngForOf]="items">
<div>...</div>
</template>
($ implicitは、反復で現在のアイテムを参照するためにディレクティブが使用する内部変数と考えることができます)。
その標準的な形式では、ngFor属性は単なるマーカーであり、ngForOf属性は実際には、繰り返し処理するもののリストを指すディレクティブへの入力です。
詳細については、 Angular microsyntax guide をご覧ください。
ngFor
はAngularの構造ディレクティブで、AngularJSのng-repeat
属性を置き換えます
ngFor
を短縮形として使用できます
<li *ngFor="let item of items">{{item.name}}</li>
または手書き版として
<template ngFor let-item="$implicit" [ngForOf]="items">
{{item.name}}
</template>
私の意見では、angularドキュメントから得たものは、
[ngFor]
はtype safe
ではありません[NgForOf]
はtype safe
です両方のクラスの詳細が少し異なるため
ngFor
クラスタイプはany
タイプです
ただし、ngForOf
クラス型はジェネリックngForOf : NgIterable<T>
ngForOf
は、私の質問ですでに言及したジェネリックのように見えます。
NgForは配列を反復処理できますが、ngContainerでは、ngContentではngForを直接反復処理できないため、反復処理には[ngForOf]を使用できます。ここで、iは可変で、評価は配列です。
例.
<ng-template ngFor let-i [ngForOf]="ratings">
<option *ngIf="i<=22" [ngValue]="i">{{i}}:00 Hrs.</option>
</ng-template>
この例では、ngForとngIfを同時に適用したいので、使用しました。
もう1つのビューは、通常はngForを適用し、レンダリング時に変換するというものです。
<template ngFor let-i [ngForOf]="ratings">
<HTML Element>...</HTML Element>
</template>
明示的なバージョン
(<template ngFor ...>)
を使用すると、ディレクティブを複数の要素に一度に適用できます暗黙のバージョン