我正在使用以下版本。
角 CLI:10.0.1
节点:12.18.2
操作系统:win32 x64
角度:10.0.2
@ag-grid-community/angular@23.2.1
@ag-grid-community/all-modules@23.2.1
我正在使用以下方式:
import { Component, OnInit, ViewChild, Output } from '@angular/core';
import { SummaryDataService } from '../services/data/summary-data.service';
import {AgGridService} from '../services/common/ag-grid.service';
import { UtilService } from '../services/common/util.service';
import { GridOptions } from '@ag-grid-community/all-modules';
import { FilterComponent } from '../common/filter/filter.component';
@Component({
selector: 'app-summary',
templateUrl: './summary.component.html',
styleUrls: ['./summary.component.css']
})
export class SummaryComponent implements OnInit {
errorMessage: any = null;
noResults: boolean;
summaryData: Array<any>;
columnDefs: any;
defaultColWidth: number = 200;
numberColWidth: number = 120;
defaultColDef: any;
innerHeight: any;
gridOptions: GridOptions;
test: any;
currentDateTo: string;
currentDateFrom: string;
pendingRequest: any;
constructor(
private summaryService: SummaryDataService,
private agGridServ: AgGridService,
private util: UtilService,
) {
this.innerHeight = 450;
this.errorMessage = null;
}
ngOnInit(): void {
this.noResults = false;
this.gridOptions = <GridOptions> {
columnDefs: this.createColumnDefs(),
onGridReady: () => {
this.gridOptions.api.sizeColumnsToFit();
},
rowHeight: 48,
headerHeight: 48,
pivotMode: true,
enableSorting: true,
enableColResize: true,
enableFilter: true,
showToolPanel: true,
enableRangeSelection: true,
sortingOrder: ['asc', 'desc'],
suppressAggFuncInHeader: true,
suppressCopyRowsToClipboard: true,
filter: 'text'
}
}
private createColumnDefs() {
return [
{
headerName: "Name",
field: "name",
width: this.defaultColWidth,
sortable: true,
resizable: true,
filter: true
},
{
// Other columns definition
}
];
}
handleUserSelection(selection) {
this.getSummaryData();
}
getSummaryData(selections: any): void {
this.summaryData = []
this.errorMessage = null;
this.noResults = false;
this.summaryService.loadSummaryData()
.subscribe (
data => {
this.summaryData = data;
this.noResults = this.summaryData.length === 0;
if(!this.gridOptions.api){
return;
}
this.gridOptions.api.setRowData(this.summaryData);
},
error => {
this.errorMessage = <any>error;
}
);
}
}
当我在 chrome 开发人员工具上看到“网络”选项卡时,服务会很好地返回结果。
问题在:
if(!this.gridOptions.api){
return;
}
基本上,在 ngOnInit() 中,我正在初始化 gridOptions (GridOptions);但我的数据稍后会被提取(基于一些检查和用户输入)。
因此,当我尝试使用 setRowData 时,由于 this.gridOptions.api 未定义而失败。
我该如何解决这个问题?