【发布时间】:2019-11-17 19:57:43
【问题描述】:
所以我正在为我的应用程序中的表格开发一项功能。我已经对 ngx-datatable 作为一个组件进行了抽象,该组件充当我应用程序中其他组件的外观(someComponent => FacadeTableComponent => Ngx-DataTable)。
列是基于 someComponent 在 FacadeTableComponent 中创建的,并作为输入传递给 NgxDataTable。
但现在我想向数据表添加一个树视图(有效),但我希望 FacadeTableComponent 设置一个默认的第一列,其中包含一个按钮,该按钮可以折叠/展开树。所以我认为可以在 FacadeTableComponent html 模板中将默认列定义为 ngx-datatable-column。问题似乎是输入列似乎覆盖了我的默认列。
现在我尝试以某种方式使用 @ViewChild 获取 ngx-datatable-column 并将其取消转移到 FacadeTableComponent 中生成的列,但我无法将其作为指令而不是作为 ElementRef 来获取。
我当然可以在 .ts 文件中定义一个默认列,并在生成其余列时生成它,但我想知道是否可以按照我在标题中描述的方式进行操作。
这个默认列的原因是当我将现有的列之一设置为treeView列时,ngx数据表添加了一个默认按钮,即使我为单元格提供了自己的模板,并且我想提供自己的模板中的按钮。
<ngx-datatable #ngxDataTable class="datatable" [rows]="collection" [columnMode]="columnMode"
[footerHeight]="footerHeight" [selectionType]="selectionType" [sortType]="sortType" [sorts]="sorts"
[rowIdentity]="rowIdentity" [messages]="tableMessages" [selected]="selectedRows" [columns]="columns"
[headerHeight]="headerHeight" [rowHeight]="rowHeight" [scrollbarV]="true" [scrollbarH]="true"
(select)="onSelect($event)" (activate)="onActive($event)" [externalSorting]="true" [rowClass]="rowCssClass"
[sortType]="'single'" [treeFromRelation]="'MasterId'" [treeToRelation]="'id'"
(treeAction)="onTreeAction($event)" (sort)="sortRows($event)" (resize)="resizeTriggered($event)">
<!-- Datatable tree view column -->
<ngx-datatable-column #column_tree_view name="Tree" [isTreeColumn]="true" [width]="150"
[treeLevelIndent]="20">
<ng-template ngx-datatable-tree-toggle let-tree="cellContext">
<button [disabled]="tree.treeStatus==='disabled'" (click)="tree.onTreeAction()">
<span *ngIf="tree.treeStatus==='loading'">
...
</span>
<span *ngIf="tree.treeStatus==='collapsed'">
↑
</span>
<span *ngIf="tree.treeStatus==='expanded'">
↓
</span>
<span *ngIf="tree.treeStatus==='disabled'">
⃠
</span>
</button>
</ng-template>
</ngx-datatable-column>
<ngx-datatable>
【问题讨论】:
标签: angular typescript ngx-datatable