Posso usar ngIf
sem um elemento de contêiner extra?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Não funciona em uma tabela porque isso tornaria o HTML inválido.
ng-container
é preferível a template
:
<ng-container *ngIf="expression">
Vejo:
Encontrei um método para isso em: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Você pode simplesmente usar a
<template>
tag e substituir*ngIf
com[ngIf]
assim.fonte
template
tag, por padrão, o prefixo das diretivas angulares com * cria uma tag de modelo. então ambos são iguais[ngIf] and *ngIf
*ngIf
você tem um elemento dentro do modelo, você não terá se você escrever otemplate
mesmo. Sob certas circunstâncias, o elemento extra pode interferir.template
tag dentro,tr
/td
tag?*ngIf="foo"
é equivalente à<template [ngIf]="foo">
etiqueta de embrulho . Em suma,template
+[]
==*
, então[]
! =*
.*
faz sentido em qualquer elemento, excetotemplate
.Você não pode colocar
div
diretamente dentrotr
, isso tornaria o HTML inválido.tr
só pode tertd
/th
/table
elemento e dentro deles você pode ter outros elementos HTML.Você poderia alterar um pouco o seu HTML para que se
*ngFor
sobreponhatbody
e sengIf
sobreponhatr
, como abaixo.fonte