我从angular2开始并遇到了两种不同的语法,但我不确定它们的区别 - 或者说它们是如何工作的。
我明白这一点:
<select class="form-control" required
[(ngModel)]="model.power"
ngControl="power" #power="ngForm" >
<option *ngFor="let p of powers" [value]="p">{{p}}</option>
</select>
但这也有效
<div *ngFor="#game of games" (click)="gotoGame(game)" class="col-1-4">
<span>{{game.id}}</span>{{game.name}}
<br> {{game.description}}
<br> {{game.genre.name}}
</div>
只是另一个的别名吗?一个优于另一个的优点是什么?
答案 0 :(得分:26)
在测试版17中,语法发生了变化,只有这种形式才有效
<select class="form-control" required
[(ngModel)]="model.power"
ngControl="power" #power="ngForm" >
<option *ngFor="let p of powers" [value]="p">{{p}}</option>
</select>
另见https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28
突发变化
引用
#...
现在始终意味着ref-
。<强>之前:强>
- 在
ngFor
之外,#...
表示参考。- 在
ngFor
内,它意味着一个局部变量。这种模式令人困惑。
<强>后:强>
<template #abc>
现在定义了对TemplateRef的引用,而不是模板内部使用的输入变量。- 在声明局部变量的结构指令(例如
*ngFor
)内部,不推荐使用#...
。请改用let
。<div *ngFor="#item of items">
现在变为<div *ngFor="let item of items">
var-...
已弃用。- 在
之外使用#
ref-
或*ngFor
- 代表
ngFor
,使用语法:<template ngFor let-... [ngForOf]="...">