template tag ngtemplateoutlet example container angular angular2-template ng-template

angular - tag - ngtemplateoutlet



¿Por qué*ng? Si no funciona con ng-template? (1)

Lea el documento aquí https://angular.io/guide/structural-directives especialmente para

<div *ngIf="hero" >{{hero.name}}</div>

El asterisco es "azúcar sintáctica" para algo un poco más complicado. Internamente, Angular la desugara en dos etapas. Primero, traduce el * ngIf = "..." en un atributo de plantilla, template = "ngIf ...", así.

<div template="ngIf hero">{{hero.name}}</div>

Luego, traduce el atributo de plantilla en un elemento, envuelto alrededor del elemento host, como este.

<ng-template [ngIf]="hero"> <div>{{hero.name}}</div></ng-template>

  • La directiva * ngIf se movió al elemento donde se convirtió en un enlace de propiedad, [ngIf].
  • El resto de, incluido su atributo de clase, se movió dentro del elemento.

Así que para ello tenemos ng-container

<ng-container *ngIf="seat.section"> Section {{seat.section}} , </ng-container>

o use span o div o la etiqueta html regular.

<span *ngIf="seat.section"> Section {{seat.section}} , </span>

o si aún desea usar ng-template ( no recomendado )

<ng-template [ngIf]="seat.section"> Section {{seat.section}} , </ng-template>

Tengo una condición en la plantilla de la siguiente manera:

<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>

Tengo un conjunto de datos que contiene row y seatNo , pero parece que no se imprime en la plantilla. ¿Cuál es el problema aquí?