2016-04-02 22 views

回答

4

您不能將div直接放在tr之內,這會導致無效的HTML。 tr只能有td/th/table元素在裏面&你可以有其他的HTML元素。

可以略微改變你的HTML有*ngFor超過tbody &有ngIf超過tr本身像下面。

<tbody *ngFor="..."> 
    <tr *ngIf="..."> 
    ... 
    </tr> 
    <tr *ngIf="!..."> 
    ... 
    </tr> 
    .. 
</tbody> 
+0

它將從根本上解決這個問題,但你會權衡的核心能力你得到了tbody。如果你有一個大桌子,你可以修復頭部,只需滾動tbody即可。你的tbody將會扮演tr和tr的角色,它會扮演一個額外的包裝器的角色。如果不需要滾動並將頭部固定在頂部,這是一個實用的解決方案。我參考了我所說的:https://www.w3.org/TR/html401/struct/tables.html#h-11.2.3 – sascha10000

19

我在那找到了一個方法:https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template

您可以簡單地使用<template>標籤並用[ngIf]替換*ngIf這樣。

<template [ngIf]="..."> 
    ... 
</template> 
+0

很好,但* ngIf itslef創建一個'template'標籤,默認情況下使用angular directives prefix用*創建模板標籤。所以兩者都是相同的[ngIf]和* ngIf' –

+1

使用'* ngIf'您在模板中有一個元素,如果您自己寫入'template',則不會。在某些情況下,多餘的元素可能會干擾。 – Teak

+0

我們可以把'template'標籤放在裏面,'tr' /'td'標籤嗎? –