我正在編寫一個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] ...基於用戶在單選按鈕上選擇的criteria1
和criteria2
從模型中過濾此數據。所以基於此,表數據被填充。變量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
循環內的組件變量。任何幫助是極大的讚賞。任何建議的方法是非常值得歡迎的!
如果我添加讓利,它成爲模板的局部變量。但是,我希望它在組件中。這就是爲什麼我沒有添加「let」的原因。有沒有辦法可以將'index'值存儲在'public totalColumnsOfTheTable:number;'組件的變量中? – prabhu
啊我看到對不起,你知道你的變量globalModel將在哪裏更新嗎?也許你可以用一個「set globalModel」和一個循環來計算其中每個項目的長度? – Poney
如果理解正確,點擊單選按鈕後變量會被更新,您可以在每個上添加(更改)這個函數來計算每一行的長度。 – Poney