*ngFor:#vs let的意思?

Joh*_*las 11 angular

我从angular2开始并遇到了两种不同的语法,但我不确定它们的区别 - 或者说它们是如何工作的.

我看到了这个:

 <select class="form-control" required
      [(ngModel)]="model.power"
        ngControl="power" #power="ngForm" >
      <option *ngFor="let p of powers" [value]="p">{{p}}</option>
    </select>
Run Code Online (Sandbox Code Playgroud)

但这也有效

<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>
Run Code Online (Sandbox Code Playgroud)

是一个只是另一个的别名?一个优于另一个的优点是什么?

Gün*_*uer 27

在beta.17中,语法发生了变化,只有这种形式才有效

<select class="form-control" required
  [(ngModel)]="model.power"
    ngControl="power" #power="ngForm" >
  <option *ngFor="let p of powers" [value]="p">{{p}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)

另见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
  • for ngFor,使用语法: <template ngFor let-... [ngForOf]="...">

  • 伟大的,也升级ts修复了一些我认为是我在ngFor内部的错误行为.双赢:D (2认同)