根据我的理解,两者都在做相同的功能。但是,
ngFor
会像collections一样工作吗?
ngForOf
会像generics一样工作吗?
我的理解是否正确?要么 您能否分享一下
ngFor
和ngForOf
的更多差异(详细信息)?
答案 0 :(得分:56)
ngFor
和ngForOf
不是两个截然不同的东西 - 它们实际上是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了解详情。
答案 1 :(得分:5)
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>
答案 2 :(得分:1)
在我看来,我从有角度的文件中得到了什么,
[ngFor]
不是 type safe
[NgForOf]
type safe
因为两个课程的细节差别不大
ngFor
班级类型为any
类型
但是ngForOf
类的详细信息是
ngForOf : NgIterable<T>
ngForOf
看起来像我在问题中已经提到过的泛型。
答案 3 :(得分:1)
NgFor可以迭代一个数组但是在ngContainer,ngContent中我们不能直接迭代ngFor所以对于迭代我们 可以使用[ngForOf]。这里我是变量,评级是一个数组。
实施例。
<ng-template ngFor let-i [ngForOf]="ratings">
<option *ngIf="i<=22" [ngValue]="i">{{i}}:00 Hrs.</option>
</ng-template>
在这个例子中,我想同时应用ngFor和ngIf,所以我使用它。
另一种观点是,如果我们应用ngFor,那么在正常情况下渲染它会将其转换为
<template ngFor let-i [ngForOf]="ratings">
<HTML Element>...</HTML Element>
</template>
答案 4 :(得分:0)
明确版本
(<template ngFor ...>)
允许一次将指令应用于多个元素隐含版本