angular - 将字符串数组传递给 ngx-datatable 时出错
问题描述
我有一个角度组件,我尝试将descirptions
属性从组件传递到模板。我需要数组中的每个项目来代表表中的一行。下面是我的组件和模板:
import { Component, OnInit, ViewChild, ChangeDetectorRef } from '@angular/core';
import { DownloadPageService } from './download-page.service';
import { DatatableComponent } from '@swimlane/ngx-datatable';
import { FormGroup, FormBuilder, FormControl } from '@angular/forms';
@Component({
selector: 'app-download-page',
templateUrl: './download-page.component.html',
styleUrls: ['./download-page.component.scss']
})
export class DownloadPageComponent implements OnInit {
@ViewChild('tableWrapperList') tableWrapper;
@ViewChild('tableList') table: DatatableComponent;
currentComponentWidth;
operations:any;
filter: FormGroup = null;
tradeDate: any;
descriptions: string[] = [
'Arquivo 1',
'Arquivo 2',
'Arquivo 3'
];
constructor(private downloadPageService: DownloadPageService,
private ref: ChangeDetectorRef,
private fb: FormBuilder)
{
this.filter = fb.group({
tradeDate: new FormControl(new Date())
});
}
ngOnInit() {
this.tradeDate = this.filter.get('tradeDate').value;
this.getOperations()
this.descriptions;
}
getOperations() {
this.downloadPageService.getData()
.subscribe(source => this.operations = source);
}
ngAfterContentChecked(){
if (this.table && this.table.recalculate && (this.tableWrapper.nativeElement.clientWidth !== this.currentComponentWidth)) {
setTimeout(() => {
this.currentComponentWidth = this.tableWrapper.nativeElement.clientWidth;
this.table.recalculate();
this.ref.detectChanges();
window.dispatchEvent(new Event('resize'));
}, 300);
}
}
}
模板:
<div class="row">
<div class="table table-responsive mt-0">
<div class="bg-black table-responsive collapse-border" #tableWrapperList>
<ngx-datatable #tableList
class='table mt-0 table-hover table-stripped expandable'
[columnMode]="'flex'"
[rows]="descriptions"
[rowHeight]="'35'"
[headerHeight]="40"
[footerHeight]="40"
[reorderable]='false'
>
<ngx-datatable-column [flexGrow]=5 name="Descrição" [sortable]="false" cellClass="d-flex align-items-center text-center" headerClass="text-center">
<ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
{{value}}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column [flexGrow]=2 name="" [sortable]="false" cellClass="d-flex align-items-center text-center" headerClass="text-center">
<ng-template ngx-datatable-cell-template>
<strong>Arquivo Geral</strong>
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
</div>
</div>
</div>
但是,在迭代描述时,我犯了以下错误:
Error: Error trying to diff 'Arquivo 1'. Only maps and objects are allowed
有人能帮我吗?
解决方案
使用row
代替value
:
<ngx-datatable-column [flexGrow]=5 name="Descrição" [sortable]="false" cellClass="d-flex align-items-center text-center" headerClass="text-center">
<ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
{{row}}
</ng-template>
</ngx-datatable-column>
推荐阅读
- python - matplotlib:如何绘制曲面与 z 平面的 2D 相交曲线?
- python - python切片的奇怪行为
- python - OSError:没有可用的默认输入设备(PyAudio)
- javascript - 使用 Angular js(获取)从大型 API 动态呈现答案
- rest - Gin 错误恐慌:通配符路由与现有子节点冲突
- mongodb - Mongoose:用于级联删除的 deleteOne 中间件不起作用
- sql - SQLAlchemy/SQL:过滤表,然后加入查询
- ssh - SSH Windows 10,找出什么版本
- esb - Transformers 不能循环遍历列表元素
- multithreading - 不覆盖*标准输入*可防止多线程