Posso usar ngIfsem 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 ngIfsem 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 *ngIfcom [ngIf]assim.
<template [ngIf]="...">
...
</template>
templatetag, por padrão, o prefixo das diretivas angulares com * cria uma tag de modelo. então ambos são iguais[ngIf] and *ngIf
*ngIfvocê tem um elemento dentro do modelo, você não terá se você escrever o templatemesmo. Sob certas circunstâncias, o elemento extra pode interferir.
templatetag dentro, tr/ tdtag?
*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 divdiretamente dentro tr, isso tornaria o HTML inválido. trsó pode ter td/ th/ tableelemento e dentro deles você pode ter outros elementos HTML.
Você poderia alterar um pouco o seu HTML para que se *ngForsobreponha tbodye se ngIfsobreponha tr, como abaixo.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>