Mik*_*fer 5 angularjs ngx-datatable
我正在寻找一种方法将列添加到ngx-datatable"动态"但我无法找到方法.我想要完成的是某种日历.为了简单起见,我想说我想在表格中显示一些对象,例如:
rows: [
{ name: Joe, availableDays: [ { date:'01-01-2017', foo: true }, { date:'03-01-2017', foo: true }]}
{ name: Jack, availableDays: [ { date:'01-04-2017', foo: true }]}
]
Run Code Online (Sandbox Code Playgroud)
现在我想看到以下列和值:
Name; 01-01-2017; 02-01-2017; 03-01-2017; 04-01-2017
Joe; true; false; true; false
Jack; false; false; false; true
Run Code Online (Sandbox Code Playgroud)
忽略'foo'.我刚刚添加它以表明我正在寻找处理对象的东西.我很乐意在这个例子中使用它:https://github.com/swimlane/ngx-datatable/blob/master/demo/basic/inline.component.ts
这里的语法是这样的:
<ngx-datatable-column name="Name">
<ng-template ngx-datatable-cell-template let-value="value" let-row="row">
[...]
</ng-template>
</ngx-datatable-column>
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想回答这个问题,即使它是一年多前发布的,因为我认为它会帮助其他试图完成同样事情的人。我将 Angular6 与 Typescript 一起使用,但您仍然应该能够将解决方案应用于您的需求。
首先,我resultColumns: any[] = [];在班级中添加了一个声明。在 HTML 方面,我添加了这一点:
<ngx-datatable class='material'
[rows]='row'
[columnMode]='"flex"'
[headerHeight]='50'
[footerHeight]='50'
[rowHeight]='"auto"'
[limit]='20'
[messages]='messageObject'
[sortType]='"single"'
[loadingIndicator]='loading'
[scrollbarH]="true">
<ngx-datatable-column *ngFor="let col of resultColumns; let i = index" [name]="col.name" [flexGrow]="col.flexGrow">
<ng-template ngx-datatable-header-template>
{{ col.name }}
</ng-template>
<ng-template let-value="value" ngx-datatable-cell-template>
{{ value }}
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
Run Code Online (Sandbox Code Playgroud)
在我的 ngOnInit 中,我正在调用一个我调用的函数,该函数generateColumns()将负责填充resultColumns对象。
generateColumns(rows) {
this.rows.forEach((item) => {
this.resultColumns.push({
name: item.date,
prop: item.foo,
flexGrow: 1.0,
minWidth: 100
});
}
// Pushes the name column to the front of the column list
this.resultColumns.unshift({
name: 'Name',
prop: item.name,
flexGrow: 1.0,
minWidth: 100
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3198 次 |
| 最近记录: |