【发布时间】:2016-11-15 22:05:26
【问题描述】:
我正在尝试让我的 ag-grid 正常工作,但出现错误。
代码如下:
import { Component, OnInit } from '@angular/core';
import {AgGridNg2} from 'ag-grid-ng2/main';
import {GridOptions} from 'ag-grid/main';
import {ClientsService} from './clients.service';
@Component({
moduleId: module.id,
selector: 'clients',
directives: [AgGridNg2],
templateUrl: 'clients.component.html',
providers: [ClientsService]
})
export class ClientsComponent implements OnInit {
private gridOptions: GridOptions;
private showGrid: boolean;
private rowData: any[];
private columnDefs: any[];
private rowCount: string;
constructor(private _clientsService : ClientsService) {
this.gridOptions = <GridOptions>{};
this.createColumnDefs();
this.showGrid = true;
this.gridOptions = {
columnDefs: this.columnDefs,
}
this.gridOptions = <GridOptions>{
onGridReady: () => {
this.gridOptions.api.sizeColumnsToFit();
this.gridOptions.api.setDatasource(this.dataSource);
}
};
}
ngOnInit() { }
dataSource = {
pageSize: 10,
overflowSize: 100,
getRows: (params: any) => {
this.returnRows().subscribe(data => {
var test =
[{"ClientName":"Ronald Bowman","Country":"China","CreatedOn":"Lutou","email":"rbowman0@spotify.com"},
{"ClientName":"Pamela Hill","Country":"Russia","CreatedOn":"Krylovskaya","email":"phill1@symantec.com"},
{"ClientName":"Robin Andrews","Country":"Ukraine","CreatedOn":"Korop","email":"randrews2@photobucket.com"},
{"ClientName":"Peter Kim","Country":"Mexico","CreatedOn":"San Jose","email":"pkim3@theatlantic.com"},
{"ClientName":"Carol Foster","Country":"Mexico","CreatedOn":"El Aguacate","email":"cfoster8@intel.com"},
];
var rowsThisPage = data.slice(params.startRow, params.endRow);
var lastRow = -1;
params.successCallback(rowsThisPage, lastRow);
});
}
}
private returnRows(){
return this._clientsService.getClientsForDataTable();
}
private createColumnDefs() {
this.columnDefs = [
{headerName: 'Client Name', field: "ClientName", width: 200 },
{headerName: 'Country', field: "Country" ,width:180},
{headerName: 'Created On', field: "CreatedOn" ,width:160}
];
}
}
这是我的服务,它以 JSON 格式从后端获取数据:
import { Injectable } from '@angular/core';
import {Http, Response, Headers} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { GlobalVariablesService } from '../../shared/global/global-variables.service';
@Injectable()
export class ClientsService {
constructor(public _http:Http, private _globalVariables: GlobalVariablesService) {
}
getClientsForDataTable() {
return this._http.get(this._globalVariables.BACKEDN_API_GET_ALL_CLIENTS_FOR_DATA_TABLE)
.map((res:Response) => res.json())
.catch(this.handleError);
}
private handleError (error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}
正如您在上面的组件中看到的,当尝试使用硬编码的 JSON 数据时,它工作正常,但是当我用实际的 HTTP 响应替换它时,我得到一个错误,如下所示:
getRows: (params: any) => {
this.returnRows().subscribe(data => {
var test =
[{"ClientName":"Ronald Bowman","Country":"China","CreatedOn":"Lutou","email":"rbowman0@spotify.com"},
{"ClientName":"Pamela Hill","Country":"Russia","CreatedOn":"Krylovskaya","email":"phill1@symantec.com"},
{"ClientName":"Robin Andrews","Country":"Ukraine","CreatedOn":"Korop","email":"randrews2@photobucket.com"},
{"ClientName":"Peter Kim","Country":"Mexico","CreatedOn":"San Jose","email":"pkim3@theatlantic.com"},
{"ClientName":"Carol Foster","Country":"Mexico","CreatedOn":"El Aguacate","email":"cfoster8@intel.com"},
];
var rowsThisPage = data.slice(params.startRow, params.endRow);
var lastRow = -1;
params.successCallback(rowsThisPage, lastRow);
});
}
这是错误:
异常:TypeError:rowData.forEach 不是函数 TypeError:rowData.forEach 不是函数 在 recursiveFunction (inMemoryRowModel.js:355) 在 InMemoryRowModel.createRowNodesFromData (inMemoryRowModel.js:330) 在 InMemoryRowModel.setRowData (inMemoryRowModel.js:296) 在 PaginationController.pageLoaded (paginationController.js:138) 在 Object.successCallback (paginationController.js:210) 在 SafeSubscriber.eval [as _next] (clients.component.ts:64) 在 SafeSubscriber.__tryOrUnsub (Rx.js?1467025050775:10855) 在 SafeSubscriber.next (Rx.js?1467025050775:10810) 在 Subscriber._next (Rx.js?1467025050775:10766) 在 Subscriber.next (Rx.js?1467025050775:10743)
我已经测试了来自“数据”的 JSON 结果,应该没问题,因为我刚刚复制并替换了它而不是测试数据。
谁能帮我解决这个错误?
【问题讨论】:
标签: typescript angular ag-grid