首页 文章

ngFor模板解析错误:解析器错误:意外的令牌=在列

提问于
浏览
0

我正在编写一个使用Angular CLI构建的Angular应用程序 . 我的组件中有一个名为 globalModel 的模型 . 将使用上一页中的用户输入构建此模型 . 在当前页面中,我将在HTML表格中向用户显示此模型中包含的数据 . 我是这样做的:

<input type="radio" [(ngModel)]="criteria1" name="parameter1Identifier">Class A
<input type="radio" [(ngModel)]="criteria1" name="parameter1Identifier">Class B
.
.

<input type="radio" [(ngModel)]="criteria2" name="parameter2Identifier">Type 1
<input type="radio" [(ngModel)]="criteria2" name="parameter2Identifier">Type 2
.
.

<table>
<thead>
  <tr *ngIf="tableColumnCount">
    <th *ngFor="let colNumber of tableColumnCount | rangePipe">
      <input type="checkbox"
             [checked]=false
             (click)="selectAllElementsInColumnOfTheTableIn(colNumber);">
      select column {{ n + 1 }}
    </th>
  </tr>
</thead>

<tbody>
  <tr *ngFor="let row of globalModel | modelToArrayOfArraysFilter: criteria1: criteria2;">  
     <td *ngFor="let acol of row; let i = index; totalColumnsOfTheTable = row.length">      <--- Error!
         ....
     </td>
  </tr>
</tbody>
</table>

并且 totalColumnsOfTheTable 在组件中定义如下:

set totalColumnsOfTheTable(count: number) {
    if ( this.tableColumnCount < count ) {
      this.tableColumnCount = count;
      this._cd.detectChanges();
    }
}

该表的 row 可以包含任意数量的元素,如[obj],[obj1,obj2],[objA,objB,objC],[objN],...此数据基于 criteria1criteria2 从模型中过滤用户在单选按钮上选择的 . 因此,基于此,表数据将被填充 . 变量 tableColumnCount 将具有列总数的计数,并且表应相应地更新 . 要确定总列数,我尝试将 *ngFor 中的setter用作 totalColumnsOfTheTable = row.length .

但是,Angular抛出的错误就像

“模板解析错误:解析器错误:意外的令牌=在第65行中[允许行的行;让i =索引; totalColumnsOfTheTable = index]” .

我尝试使用 trackBy 来实现相同的效果 . 我发现 this 不是't refer to '组件' . 所以,如果我打电话 this.totalColumnsOfTheTable = index 不起作用!
请帮我确定总列数或在 *ngFor 循环中设置组件变量的任何其他方法 . 任何帮助是极大的赞赏 . 对这种方法的任何建议都是最受欢迎的!

1 回答

  • 1

    你忘记了新变量前面的 let ,它应该是这样的:

    <td *ngFor="let acol of row; let i = index; let totalColumnsOfTheTable = row.length">...</td>
    

相关问题