¿Puedo usar ngIf
sin 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 ngIf
sin 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-container
se 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 *ngIf
con algo [ngIf]
así.
<template [ngIf]="...">
...
</template>
template
etiqueta, por defecto el prefijo de directivas angulares con * crea una etiqueta de plantilla. entonces ambos son iguales[ngIf] and *ngIf
*ngIf
usted tiene un elemento dentro de la plantilla, no hacer si se escribe el template
mismo. En determinadas circunstancias, el elemento adicional podría interferir.
template
etiqueta dentro, tr
/ td
etiqueta?
*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 div
directamente dentro tr
, eso haría HTML inválido. tr
solo 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 *ngFor
más tbody
y tienen ngIf
más de tr
sí, como a continuación.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>