¿Cómo declarar una variable de referencia de plantilla dinámica dentro de un elemento?ngFor
Quiero usar el componente popover de ng-bootstrap, el código popover (con enlace Html) es como se muestra:
<ng-template #popContent>Hello, <b>{{name}}</b>!</ng-template>
<button type="button" class="btn btn-secondary" [ngbPopover]="popContent" popoverTitle="Fancy content">
I've got markup and bindings in my popover!
</button>
¿Cómo puedo envolver esos elementos dentro ngFor
?
<div *ngFor="let member of members">
<!-- how to declare the '????' -->
<ng-template #????>Hello, <b>{{member.name}}</b>!</ng-template>
<button type="button" class="btn btn-secondary" [ngbPopover]="????" popoverTitle="Fancy content">
I've got markup and bindings in my popover!
</button>
</div>
Hmmm ... ¿alguna idea?
angular
ng-bootstrap
angular-template
Boo Yan Jiong
fuente
fuente
ng-template
y referirlo con una variable de referencia de plantilla , pero ahora quiero usar este popover dentro de unngFor
elementoRespuestas:
Las variables de referencia de plantilla tienen como ámbito la plantilla en la que están definidas. Una directiva estructural crea una plantilla anidada y, por lo tanto, introduce un ámbito separado.
Entonces puede usar una variable para la referencia de su plantilla
<div *ngFor="let member of members"> <ng-template #popupContent>Hello, <b>{{member.name}}</b>!</ng-template> <button type="button" class="btn btn-secondary" [ngbPopover]="popupContent" popoverTitle="Fancy content"> I've got markup and bindings in my popover! </button> </div>
y debería funcionar porque ya ha declarado dentro
<ng-template ngFor
Ejemplo de plunker
Para obtener más detalles, consulte también:
fuente
@ViewChild
, no puede usar esta solución (y luego debe usar el de @ AlexBoisselle)Esta es la mejor solución que he encontrado: https://stackoverflow.com/a/40165639/3870815
En esa respuesta usan:
Para construir una lista de esos componentes generados dinámicamente. ¡Te recomiendo que lo pruebes!
fuente
Otra forma de permitir esto es crear un componente que envuelva el botón y la plantilla ng
Y tenga lo siguiente en el componente de botón de popover
fuente
Puedes usar
trackBy: trackByFn
en*ngFor
fuente