Ben ngx-datatable kullanarak yeniden kullanılabilir bir datatable oluşturma ve satır detay içinde render dinamik bileşenler istiyorum. Datatable bileşeni, bir üst modülünden bağımsız değişken olarak bir bileşen sınıfı alır ve benComcomponent oluşturmak için ComponentFactory kullanın. Dinamik bileşen için yapıcı ve onInit yöntemlerinin çalıştığını, ancak DOM bağlı olmadığını görebilirsiniz.
Datatable html, satır ayrıntısı için şöyle görünür:
<!-- [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] -->
Ve işte .ts dosyam şöyle görünüyor:
@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);
}
Başka bir nokta, eğer #dynamicPlaceholder
ng-şablonum ngx-datatable'ın dışına yerleştirilirse, çalışır ve dinamik modülün oluşturulması ve görüntülenmesidir.
<ng-content>
iç içe işaretleme yapmak için bir etikete sahip olmadığı sürece oluşturulmaz.