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.
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.
Respostas:
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.
<template [ngIf]="...">
...
</template>
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 o template
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, exceto template
.
Você não pode colocar div
diretamente dentro tr
, isso tornaria o HTML inválido. tr
só pode ter td
/ th
/ table
elemento e dentro deles você pode ter outros elementos HTML.
Você poderia alterar um pouco o seu HTML para que se *ngFor
sobreponha tbody
e se ngIf
sobreponha tr
, como abaixo.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>