ngx-datatable을 사용하여 재사용 가능한 데이터 테이블을 만들고 있으며 행 세부 정보 안에 동적 구성 요소를 렌더링하고 싶습니다. 데이터 테이블 구성 요소는 부모 모듈에서 인수로 구성 요소 클래스를 받고 ComponentFactory를 사용하여 구성 요소를 만듭니다. 생성자와 onInit 메소드가 동적 구성 요소에 대해 실행되고 있지만 DOM에 첨부되지 않았 음을 알 수 있습니다.
이것은 행 세부 사항에 대한 datatable html 모양입니다.
<!-- [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] -->
그리고 이것은 내 .ts 파일의 모습입니다 :
@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);
}
또 다른 요점은 내 #dynamicPlaceholder
ng-template이 ngx-datatable 외부에 배치되면 작동하고 동적 모듈이 렌더링되고 표시된다는 것입니다.
<ng-content>
중첩 된 마크 업을 렌더링 하는 태그 가없는 한 렌더링되지 않습니다 .