Bagaimana cara mendeklarasikan variabel referensi template dinamis di dalam elemen?ngFor
Saya ingin menggunakan komponen popover dari ng-bootstrap, kode popover (dengan pengikatan Html) seperti yang ditunjukkan:
<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>
Bagaimana saya bisa membungkus elemen-elemen itu di dalamnya 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 ... ada ide?
angular
ng-bootstrap
angular-template
Boo Yan Jiong
sumber
sumber
ng-template
dan merujuknya dengan variabel referensi template , tapi sekarang saya ingin menggunakan popover ini di dalamngFor
elemenJawaban:
Variabel referensi template dicakup ke template tempat mereka ditentukan. Arahan struktural membuat template bertingkat dan, oleh karena itu, memperkenalkan cakupan terpisah.
Jadi Anda bisa menggunakan satu variabel untuk referensi template Anda
<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>
dan itu harus bekerja karena telah dideklarasikan di dalam
<ng-template ngFor
Contoh Plunker
Untuk lebih jelasnya lihat juga:
sumber
@ViewChild
, Anda tidak dapat menggunakan solusi ini (dan kemudian harus menggunakan @ AlexBoisselle's)Ini adalah solusi terbaik yang saya temukan: https://stackoverflow.com/a/40165639/3870815
Dalam jawaban itu mereka menggunakan:
Untuk membuat daftar komponen yang dibuat secara dinamis. Sangat merekomendasikan Anda untuk memeriksanya!
sumber
Cara lain untuk mengizinkannya adalah dengan membuat komponen yang membungkus tombol dan ng-template
Dan memiliki yang berikut di komponen tombol popover
sumber
Anda dapat menggunakan
trackBy: trackByFn
dalam*ngFor
sumber