* ngFor:#vs let的意思?

时间:2016-05-02 06:49:47

标签: 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>

但这也有效

<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>

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

1 个答案:

答案 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]="...">
  •