I have custom dropdown component in each header cell of ngx-datatable. But when I click at dropdown the it is going inside ngx-datatable body. How can I fix the issue please help me.
I am using angular 4.0 and typescript 2.4.
Here is my code:
<div>
<ngx-datatable style="height:450px;"
class='material'
[rows]='activeTabData | filtermanual:propKey:propValue | orderBy : {property: column, direction: direction}'
[columnMode]="'force'"
[headerHeight]="height"
[rowHeight]="getRowHeight"
[scrollbarV]="true"
[scrollbarH]="true"
[loadingIndicator]="loadingIndicator"
[rowClass]="getRowClass"
(page)="onPage($event)">
<div>
<ngx-datatable-column
[width]="50"
[frozenLeft]="true">
<ng-template let-row="row" let-value="value" ngx-datatable-cell-template >
<input type="checkbox"
(ngModelChange)="checkButtonState($event, row)"
[ngModel]="row.status"
>
</ng-template>
</ngx-datatable-column>
<ul>
<li *ngFor="let col of tableKeys; let i=index; let last = last" >
<ngx-datatable-column name={{col}} width="230" [resizeable]="true">
<ng-template let-column="column" ngx-datatable-header-template >
<div class="draggable" style="height:30px;width:160px;background:transparent;z-index:1000;position:relative;cursor:pointer;"></div>
<ng2-multiselect
[options]="dropdowns[col]"
[loading]="isLoading"
[(ngModel)]="multiModels[col]"
[texts]="{'defaultTitle':col}"
(dropdownOpen)="dropdownOpen()"
(dropdownClosed)="dropdownClosed(col)"
>
</ng2-multiselect>
</ng-template>
<ng-template let-row="row" let-value="value" ngx-datatable-cell-template >
<i [innerHTML]="row[col]"></i>
</ng-template>
</ngx-datatable-column>
</li>
</ul>
</div>
</ngx-datatable>
</div>
You can share templates by adding a
TemplateRef
as aViewChild
.Let me give you an example:
Let's say we have these columns and a template (outside the columns):
as you can see I bind
[cellTemplate]
to adateTemplate
. This date template is defined in my component as a ViewChild with a template reference.In your case you can do the same but use
[cellHeaderTemplate]
instead of[cellTemplate]
!