2016-04-02 20 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'标签吗? –