如果沒有額外的容器元素,我可以使用ngIf嗎?Angular2使用ngIf沒有額外的元素
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
..
</tr>
當我添加div時它不起作用。
如果沒有額外的容器元素,我可以使用ngIf嗎?Angular2使用ngIf沒有額外的元素
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
..
</tr>
當我添加div時它不起作用。
ng-container
優於template
:
<ng-container *ngIf="expression">
參見:
您不能將div
直接放在tr
之內,這會導致無效的HTML。 tr
只能有td
/th
/table
元素在裏面&你可以有其他的HTML元素。
可以略微改變你的HTML有*ngFor
超過tbody
&有ngIf
超過tr
本身像下面。
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>
它將從根本上解決這個問題,但你會權衡的核心能力你得到了tbody。如果你有一個大桌子,你可以修復頭部,只需滾動tbody即可。你的tbody將會扮演tr和tr的角色,它會扮演一個額外的包裝器的角色。如果不需要滾動並將頭部固定在頂部,這是一個實用的解決方案。我參考了我所說的:https://www.w3.org/TR/html401/struct/tables.html#h-11.2.3 – sascha10000
我在那找到了一個方法:https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template。
您可以簡單地使用<template>
標籤並用[ngIf]
替換*ngIf
這樣。
<template [ngIf]="...">
...
</template>
很好,但* ngIf itslef創建一個'template'標籤,默認情況下使用angular directives prefix用*創建模板標籤。所以兩者都是相同的[ngIf]和* ngIf' –
使用'* ngIf'您在模板中有一個元素,如果您自己寫入'template',則不會。在某些情況下,多餘的元素可能會干擾。 – Teak
我們可以把'template'標籤放在裏面,'tr' /'td'標籤嗎? –
您應該添加一個示例「生成」HTML代碼片段,以明確HTML元素不會被創建。 –