J'ai une condition dans le modèle comme suit:
<ng-container>
<p *ngFor="let seat of InfoDetails?.seatInfo">
<template *ngIf="seat.section">
Section {{seat?.section}} ,
</template>
<template *ngIf="seat.row">
Row {{seat?.row}},
</template>
<template *ngIf="seat.seatNo">
Seat number {{seat?.seatNo}}
</template>
</p>
</ng-container>
J'ai un ensemble de données contenant row
et seatNo
, mais il ne semble pas apparaître dans le modèle. Quel est le problème ici?
Lisez la doc ici https://angular.io/guide/structural-directives spécialement pour
<div *ngIf="hero" >{{hero.name}}</div>
L'astérisque est "sucre syntaxique" pour quelque chose d'un peu plus compliqué. En interne, Angular le sépare en deux étapes. Premièrement, il traduit le * ngIf = "..." en un attribut de modèle, template = "ngIf ...", comme ceci.
<div template="ngIf hero">{{hero.name}}</div>
Ensuite, il traduit l'attribut template en un élément, enroulé autour de l'élément Host, comme ceci.
<ng-template [ngIf]="hero"> <div>{{hero.name}}</div></ng-template>
- La directive * ngIf a été déplacée vers l'élément où elle est devenue une liaison de propriété, [ngIf].
- Le reste de la, y compris son attribut de classe, s'est déplacé à l'intérieur de l'élément.
Donc pour cela nous avons ng-container
<ng-container *ngIf="seat.section">
Section {{seat.section}} ,
</ng-container>
ou utilisez span ou div ou une balise HTML normale.
<span *ngIf="seat.section">
Section {{seat.section}} ,
</span>
ou si vous voulez toujours utiliser ng-template ( non recommandé )
<ng-template [ngIf]="seat.section">
Section {{seat.section}} ,
</ng-template>