以下样本中的ngFor之前的含义是什么?为什么需要它?
<div *ngFor="#hero of heroes" (click)="selectHero(hero)">
{{hero.name}}
</div>
答案 0 :(得分:31)
ngFor
只能应用于<template>
。 *ngFor
是可以应用于任何元素的简短形式,<template>
元素是在场景后隐式创建的。
https://angular.io/api/common/NgForOf
的模式相同语法
<li *ngFor="let item of items; let i = index">...</li>
<li template="ngFor let item of items; let i = index">...</li>
<template ngFor let-item [ngForOf]="items" let-i="index"><li>...</li>
<强>更新强>
引入了2.0.0最终版本<ng-container>
,其行为类似于<template>
(实际上未添加到DOM的包装元素),但支持*ngFor="..."
语法。
答案 1 :(得分:14)
当Angular在ngFor中看到星号(*)时,它将使用其DOM元素作为模板来渲染循环。
<div *ngFor="#hero of heroes">
{{ hero.name }}
</div>
相当于
<template ngFor #hero [ngForOf]="heroes">
<div>
{{ hero.name }}
</div>
</template>
答案 2 :(得分:7)
来自官方Angular documentation的引用:
当我们审核
NgFor
和NgIf
内置指令时,我们就召集了 一种奇怪的语法:出现在之前的星号(*) 指令名称。
*
是一种语法糖,使其更容易阅读和 编写指令,借助模板修改HTML布局。NgFor
,NgIf
和NgSwitch
都添加和删除元素子树 包含在<template>
标记中。
有关详情,请查看
https://angular.io/guide/template-syntax#built-in-structural-directives
https://angular.io/guide/structural-directives#asterisk
* ngFor有四个属性: index , last ,甚至和 odd 。我们可以使用局部变量获得每次迭代的索引值,最后一个值,奇数,甚至索引本身。这是一个有效的例子:
demoArray= [1,2,3,4,5,6,7,8,8,9];
<ul>
<li *ngFor='#item of demoArray #i=index #l=last #e=even'>
Item value is : {{item}} has index value is : {{i}} and last value is :{{l}} even index :{{e}}</li>
</ul>
答案 3 :(得分:3)
它们被称为结构指令,因为它们具有更改DOM结构的能力。 有关更多信息,您可以访问 https://angular.io/guide/structural-directives。
答案 4 :(得分:1)
在*ngFor
中,*是使用带有模板标记的新角度模板语法的简写,这也称为结构指令。知道*只是显式定义数据绑定的简写是有帮助的。在模板标签上。