angular - 在 ngFor 中声明变量

标签 angular

在我的 angular2 项目中,我需要呈现一个矩阵。 这是我当前的代码:

<tr *ngFor="let worker of workers">
    <td class="{{worker.fired ? 'fired-worker':''}}">{{worker.lastName}}<br>{{worker.firstName}}</td>
    <td *ngFor="let course of courses;" class="sk-table-sub-header">

        <div *ngIf="course.isGeneric">
            <div class="col-xs-6" sc-dc [sc-dc-date]="matrix[worker.id][course.id].expiration">
                <date-picker (onDateChanged)="onDateChanged($event, worker, course, 'genericStartDate')" [date]="matrix[worker.id][course.id].genericStartDate></date-picker>
            </div>
            <div class="col-xs-6 training-table-rounded-cell" sc-dc [sc-dc-date]="matrix[worker.id][course.id].expiration">
                <date-picker (onDateChanged)="onDateChanged($event, worker, course, 'expiration')" [date]="matrix[worker.id][course.id].expiration" ></date-picker>
            </div>                    
        </div>
        ...

如您所见,我多次使用了 matrix[worker.id][course.id].expiration。 我尽量避免像这样声明一个变量:

 <td *ngFor="let course of courses; let item = matrix[worker.id][course.id]" ...>

但是我得到一个解析错误:

 Parser Error: Unexpected token [, expected identifier, keyword, or string at column 44 in [ngFor let course of courses; let i = matrix[worker.id][course.id]] in TrainingPlanComponent@44:20 ("r.fired ? 'fired-worker':''}}">{{worker.lastName}}<br>{{worker.firstName}}</td>

有没有办法实现我的意图?

非常感谢

最佳答案

您目前无法为模板变量分配任意值。

  • 模板变量可以引用添加它们的元素或组件
  • exportAs 引用可以分配给模板变量,如 #xxx="ngForm"
  • ngForindex 指令创建的局部变量可以赋值

还有一个 Unresolved 问题来支持您的用例,但不清楚是否以及何时会支持。

作为解决方法,您可以考虑将模板的一部分包装到它自己的组件中,并将值传递给 @Input()

关于angular - 在 ngFor 中声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37114178/

相关文章:

angular - 实现 ngx-gallery 时无法读取未定义的属性 'replace'

javascript - ngIf 无法在 Angular 组件内的 JavaScript 方法中工作

angular - 将 Angular 分量从一个容器移动到另一个容器

javascript - Angular4 - 没有表单控件的值访问器

angular - 将焦点集中在 Angular 上动态创建的输入上

angular - Angular Testing 中 tick() 和 flush() 有什么区别?

angular - 无法使用 Cypress + Istanbul 获得代码覆盖率

javascript - 如何在 Angular 中保存和加载 html WYSIWYG 编辑器中的内容

angular - 在 Angular 5 应用程序中导入第三方 js 库 cq-prolyfill 的正确方法

angular - Twilio 聊天模块错误 TS1086 无法在环境上下文中声明访问器