Puis-je utiliser ngIf
sans élément de conteneur supplémentaire?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Cela ne fonctionne pas dans un tableau car cela rendrait du HTML invalide.
Puis-je utiliser ngIf
sans élément de conteneur supplémentaire?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Cela ne fonctionne pas dans un tableau car cela rendrait du HTML invalide.
Réponses:
ng-container
est préféré à template
:
<ng-container *ngIf="expression">
Voir:
J'ai trouvé une méthode pour cela sur: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Vous pouvez simplement utiliser la <template>
balise et la remplacer *ngIf
par [ngIf]
celle-ci.
<template [ngIf]="...">
...
</template>
template
balise, par défaut le préfixe des directives angulaires avec * crée une balise de modèle. donc les deux sont identiques[ngIf] and *ngIf
*ngIf
vous avez un élément à l'intérieur du modèle, vous n'en avez pas si vous écrivez vous- template
même. Dans certaines circonstances, l'élément supplémentaire pourrait interférer.
template
tag à l'intérieur, tr
/ td
tag?
*ngIf="foo"
équivaut à la <template [ngIf]="foo">
balise d' emballage . En bref, template
+ []
== *
, donc []
! = *
. *
a du sens dans n'importe quel élément sauf template
.
Vous ne pouvez pas mettre div
directement à l'intérieur tr
, cela rendrait du HTML invalide. tr
ne peut contenir que l' élément td
/ th
/ table
et à l'intérieur, vous pouvez avoir d'autres éléments HTML.
Vous pouvez légèrement modifier votre HTML pour avoir *ngFor
plus tbody
et avoir ngIf
sur tr
lui-même comme ci-dessous.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>