Jak zadeklarować zmienną odniesienia do szablonu dynamicznego wewnątrz elementu?ngFor
Chcę użyć komponentu popover z ng-bootstrap, kod popover (z wiązaniem HTML) jest następujący:
<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>
Jak mogę zawinąć te elementy do środka 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 ... jakiś pomysł?
angular
ng-bootstrap
angular-template
Boo Yan Jiong
źródło
źródło
ng-template
i odnieść go do zmiennej referencyjnej szablonu , ale teraz chcę użyć tego popovera wewnątrzngFor
elementuOdpowiedzi:
Zakres zmiennych odwołań do szablonów obejmuje szablon, w którym zostały zdefiniowane. Dyrektywa strukturalna tworzy zagnieżdżony szablon, a zatem wprowadza oddzielny zakres.
Możesz więc użyć jednej zmiennej jako odniesienia do szablonu
<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>
i powinno działać, ponieważ już zadeklarował w środku
<ng-template ngFor
Przykład Plunkera
Aby uzyskać więcej informacji, zobacz także:
źródło
@ViewChild
, nie możesz użyć tego rozwiązania (a następnie powinieneś użyć rozwiązania @ AlexBoisselle)To najlepsze rozwiązanie, jakie znalazłem: https://stackoverflow.com/a/40165639/3870815
W tej odpowiedzi używają:
Aby zbudować listę tych dynamicznie generowanych komponentów. Gorąco polecam to sprawdzić!
źródło
Innym sposobem na to jest utworzenie komponentu, który otacza przycisk i szablon ng
I miej następujące elementy w komponencie przycisku popover
źródło
Możesz użyć
trackBy: trackByFn
w*ngFor
źródło