2017-12-18 143 views
0

我正在編寫一個Angular應用程序,使用Angular CLI構建。我的組件中有一個名爲​​的模型。該模型將使用前一頁中的用戶輸入來構建。在當前頁面中,我將這個模型中包含的數據以HTML表格的形式顯示給用戶。下面是我如何做到這一點:ngFor模板解析錯誤:解析器錯誤:意外的標記=列

<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

但是,角拋出錯誤像

"Template parse errors: Parser Error: Unexpected token = at column 65 in [let acol of row; let i = index; totalColumnsOfTheTable = index] ".

我嘗試使用trackBy到acheve相同。我發現this沒有提到'組件'。所以,如果我撥打this.totalColumnsOfTheTable = index不起作用!
請幫助我確定總列數或任何其他方式來設置*ngFor循環內的組件變量。任何幫助是極大的讚賞。任何建議的方法是非常值得歡迎的!

回答

0

你穿上新變量前面忘了let,它應該是這樣的:

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

如果我添加讓利,它成爲模板的局部變量。但是,我希望它在組件中。這就是爲什麼我沒有添加「let」的原因。有沒有辦法可以將'index'值存儲在'public totalColumnsOfTheTable:number;'組件的變量中? – prabhu

+0

啊我看到對不起,你知道你的變量globalModel將在哪裏更新嗎?也許你可以用一個「set globalModel」和一個循環來計算其中每個項目的長度? – Poney

+0

如果理解正確,點擊單選按鈕後變量會被更新,您可以在每個上添加(更改)這個函數來計算每一行的長度。 – Poney