Saya membuat datatable dapat digunakan kembali menggunakan ngx-datatable dan saya ingin memiliki komponen dinamis yang dirender di dalam detail baris. Komponen datatable menerima kelas komponen sebagai argumen dari modul induk dan saya menggunakan ComponentFactory untuk membuatComponent. Saya dapat melihat bahwa konstruktor dan metode onInit berjalan untuk komponen dinamis tetapi tidak dilampirkan ke DOM.
Inilah tampilan dari html yang dapat datatable untuk detail baris:
<!-- [Row Detail Template] -->
<ngx-datatable-row-detail rowHeight="100" #myDetailRow (toggle)="onDetailToggle($event)">
<ng-template let-row="row" #dynamicPlaceholder let-expanded="expanded" ngx-datatable-row-detail-template>
</ng-template>
</ngx-datatable-row-detail>
<!-- [/Row Detail Template] -->
Dan inilah tampilan file .ts saya:
@ViewChild('myDetailRow', {static: true, read: ViewContainerRef}) myDetailRow: ViewContainerRef;
@ViewChild('dynamicPlaceholder', {static: true, read: ViewContainerRef}) dynamicPlaceholder: ViewContainerRef;
renderDynamicComponent(component) {
var componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
var hostViewConRef1 = this.myDetailRow;
var hostViewConRef2 = this.dynamicPlaceholder;
hostViewConRef1.createComponent(componentFactory);
hostViewConRef2.createComponent(componentFactory);
}
Poin lain adalah bahwa jika #dynamicPlaceholder
template-ng saya ditempatkan di luar ngx-datatable, ia berfungsi dan modul dinamis di-render dan ditampilkan.
<ng-content>
tag untuk memberikan markup bersarang.