why *ngIf doesnt'work with ng-template?
AngularAngular2 TemplateNg TemplateAngular Problem Overview
I have a condition in the template as follows:
<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>
I have dataset that contains row
and seatNo
, but it does not seem to print in the template. what is the issue here?
Angular Solutions
Solution 1 - Angular
Read the doc here https://angular.io/guide/structural-directives especially for
><div *ngIf="hero" >{{hero.name}}</div>
>
> The asterisk is "syntactic sugar" for something a bit more
> complicated. Internally, Angular desugars it in two stages. First, it
> translates the *ngIf="..." into a template attribute, template="ngIf
> ...", like this.
>
> <div template="ngIf hero">{{hero.name}}</div>
>
> Then it translates the template attribute into a <ng-template [ngIf]="hero"> <div>{{hero.name}}</div></ng-template>
>
> - The *ngIf directive moved to the
So for it we have ng-container
<ng-container *ngIf="seat.section">
Section {{seat.section}} ,
</ng-container>
or use span or div or regular html tag.
<span *ngIf="seat.section">
Section {{seat.section}} ,
</span>
or if you still want to use ng-template (not recommended)
<ng-template [ngIf]="seat.section">
Section {{seat.section}} ,
</ng-template>