【问题标题】:Angular 2 ngfor first, last, index loopAngular 2 ngfor 第一个,最后一个,索引循环
【发布时间】:2017-11-01 11:23:41
【问题描述】:

我正在尝试将此示例中的第一个匹配项设置为默认值:plunkr

得到以下错误:

    Unhandled Promise rejection: Template parse errors:
    TypeError: Cannot read property 'toUpperCase' of undefined ("dButtonToggleGroup">
    <md-button-toggle [ERROR ->]*ngFor="let indicador of indicadores; #first = first" value="indicador.id" [checked]="first">"): ng:///AppModule/HomeComponent.html@35:78
    Parser Error: Unexpected token #, expected identifier, keyword, or string at column 31 in [let indicador of indicadores; #first = first] in ng:///AppModule/HomeComponent.html@35:78 ("<md-button-toggle *ngFor="let indicador of indicadores; #first = first" value="indicador.id" [ERROR ->][checked]="first">
    <span>{{ indicado"): ng:///AppModule/HomeComponent.html@35:153

怎么了??

【问题讨论】:

    标签: angular angular-material


    【解决方案1】:

    这是它在 Angular 6 中的完成方式

        <li *ngFor="let user of userObservable ; first as isFirst">
           <span *ngIf="isFirst">default</span>
        </li>
    

    注意从let first = firstfirst as isFirst 的变化

    【讨论】:

    • 您需要将管道 | 替换为 ; 才能正常工作。
    • let first = firstfirst as isFirst 两个声明都可以正确使用,第二个别名非常可读
    【解决方案2】:

    看看这个plunkr

    当您绑定到变量时,您需要使用方括号。此外,当您想要获取对 html 中元素的引用时,您可以使用主题标签,而不是在模板中声明变量。

    <md-button-toggle *ngFor="let indicador of indicadores; let first = first;" [value]="indicador.id" [checked]="first"> 
    

    编辑: 感谢Christopher Moore: Angular 公开了以下局部变量:

    • index
    • first
    • last
    • even
    • odd

    【讨论】:

    • 谢谢!这对我帮助很大,但我尝试使用第一个,因为搜索它我发现了一些示例,例如:blog.angular-university.io/angular-2-ngfor(识别列表的第一个和最后一个元素)
    • 啊,好的。你也可以这样做。而不是 let i = index,只需将其更改为 let first = first; 并将 [checked] 绑定更改为仅检查“first”而不是“i == 0”。
    • 不错!现在正在工作!但我完全不明白为什么我必须用括号绑定选中的属性
    • @Steveadoo in ngFor Angular 公开了以下局部变量 indexfirstlastevenodd。您能否更新答案以向未来用户澄清这一点?
    • 你可以写first as isFirst(isFirst 是自定义变量)而不是let first = first,如下所述:angular.io/api/common/NgForOf#local-variables
    【解决方案3】:

    这样您就可以在 ANGULAR 中获得*ngFor 循环中的任何索引...

    <ul>
      <li *ngFor="let object of myArray; let i = index; let first = first ;let last = last;">
        <div *ngIf="first">
           // write your code...
        </div>
    
        <div *ngIf="last">
           // write your code...
        </div>
      </li>
    </ul>
    

    我们可以在 *ngFor

    中使用这些别名
    • index : number : let i = index 获取对象的所有索引。
    • first : boolean : let first = first 获取对象的第一个索引。
    • last : boolean : let last = last 获取对象的最后索引。
    • odd : boolean : let odd = odd 获取对象的奇数索引。
    • even : boolean : let even = even 获取对象的偶数索引。

    【讨论】:

    • 如果我们选择let first as isFirst;,我们如何切换到其他选项?它总是指向第一个索引。
    • @optimistrohit 您可以为单个指令添加多个可用变量,例如 first 用于第一个元素,last 用于最后一个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 2021-05-26
    相关资源
    最近更新 更多