Posso usare ngIf
senza un elemento contenitore aggiuntivo?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Non funziona in una tabella perché renderebbe HTML non valido.
Posso usare ngIf
senza un elemento contenitore aggiuntivo?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Non funziona in una tabella perché renderebbe HTML non valido.
Risposte:
ng-container
è preferito rispetto a template
:
<ng-container *ngIf="expression">
Vedere:
Ho trovato un metodo per questo su: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Puoi semplicemente usare il <template>
tag e sostituirlo *ngIf
con [ngIf]
questo.
<template [ngIf]="...">
...
</template>
template
tag, per impostazione predefinita il prefisso delle direttive angolari con * crea un tag modello. quindi entrambi sono uguali[ngIf] and *ngIf
*ngIf
hai un elemento all'interno del modello, non lo fai se scrivi tu template
stesso. In determinate circostanze l'elemento aggiuntivo potrebbe interferire.
template
tag all'interno, tr
/ td
tag?
*ngIf="foo"
è equivalente al <template [ngIf]="foo">
tag di avvolgimento . In breve, template
+ []
== *
, quindi []
! = *
. *
ha senso in qualsiasi elemento tranne template
.
Non puoi inserire div
direttamente all'interno tr
, ciò renderebbe HTML non valido. tr
può contenere solo l' elemento td
/ th
/ table
e al loro interno potresti avere altri elementi HTML.
Potresti cambiare leggermente il tuo HTML per avere *ngFor
sopra tbody
e ngIf
sopra tr
se stesso come sotto.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>