¿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.
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í.fuente
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 eltemplate
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 exceptotemplate
.No se puede poner
div
directamente dentrotr
, eso haría HTML inválido.tr
solo puede tenertd
/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ástbody
y tienenngIf
más detr
sí, como a continuación.fuente