根据我的理解,两者的功能相同。但,

  • ngFor将像collections吗?
  • ngForOf将像generics吗?


  • 最佳答案

    ngForngForOf不是两个截然不同的东西,它们实际上是NgForOf指令的选择器。

    如果检查source,您会发现NgForOf指令具有作为其选择器的位置:[ngFor][ngForOf],这意味着两个元素都必须存在于元素上才能使指令“激活”。

    当您使用*ngFor时,Angular编译器将该语法解糖为规范形式,该规范在元素上具有两个属性。

    所以,

      <div *ngFor="let item of items"></div>
    

    对以下对象不满意:
     <template [ngFor]="let item of items">
         <div></div>
     </template>
    

    第一次脱糖是由于“*”。下一个脱糖是因为采用了微语法:“let item of items”。 Angular编译器将其除糖以:
     <template ngFor let-item="$implicit" [ngForOf]="items">
       <div>...</div>
     </template>
    

    (在这里,您可以将$ implicit视为该指令用来引用迭代中当前项目的内部变量)。

    以其规范形式,ngFor属性只是一个标记,而ngForOf属性实际上是该指令的输入,该指令指向要迭代的事物列表。

    您可以查看Angular microsyntax guide了解更多信息。

    09-27 10:55