¿Puedo usar ngIfsin un elemento contenedor adicional?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
No funciona en una tabla porque haría HTML inválido.
¿Puedo usar ngIfsin un elemento contenedor adicional?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
No funciona en una tabla porque haría HTML inválido.
Respuestas:
ng-containerse prefiere sobre template:
<ng-container *ngIf="expression">
Ver:
Encontré un método para eso en: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Simplemente puede usar la <template>etiqueta y reemplazarla *ngIfcon algo [ngIf]así.
<template [ngIf]="...">
...
</template>
templateetiqueta, por defecto el prefijo de directivas angulares con * crea una etiqueta de plantilla. entonces ambos son iguales[ngIf] and *ngIf
*ngIfusted tiene un elemento dentro de la plantilla, no hacer si se escribe el templatemismo. En determinadas circunstancias, el elemento adicional podría interferir.
templateetiqueta dentro, tr/ tdetiqueta?
*ngIf="foo"es equivalente a la <template [ngIf]="foo">etiqueta de envoltura . En resumen, template+ []== *, entonces []! = *. *tiene sentido en cualquier elemento excepto template .
No se puede poner divdirectamente dentro tr, eso haría HTML inválido. trsolo puede tener td/ th/table elemento en él y dentro de ellos podría tener otros elementos HTML.
Se podría cambiar ligeramente el código HTML para tener *ngFormás tbodyy tienen ngIfmás de trsí, como a continuación.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>