我可以在没有额外容器元素的情况下使用ngIf
吗?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
它不能在表中工作,因为这会产生无效的HTML。
答案 0 :(得分:121)
ng-container
优先于template
:
<ng-container *ngIf="expression">
请参阅:
答案 1 :(得分:19)
我在https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template上找到了一种方法。
您只需使用<template>
代码,并将*ngIf
替换为[ngIf]
,就像这样。
<template [ngIf]="...">
...
</template>
答案 2 :(得分:4)
您无法将div
直接放在tr
内,这会导致无效的HTML。 tr
只能包含td
/ th
/ table
元素。在其中你可以有其他HTML元素。
您可以稍微更改HTML,使*ngFor
超过tbody
&amp;如下所示ngIf
超过tr
。
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>
答案 3 :(得分:0)
添加括号解决此问题
<ng-container *ngIf="(!variable| async)"></ng-container>