如果没有额外的容器元素,我可以使用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元素不会被创建。 –