setColumnDefs 在 Angular 5 中不起作用
setColumnDefs does not work in Angular 5
正如其他地方所建议的那样,
我已经在 class 构造函数中初始化了 gridOptions。但是当我尝试 setColumnDefs 时,它仍然给我错误:
TypeError: 无法读取未定义的 属性 'setColumnDefs'
我还缺少什么?
export class ConfigurationComponent implements OnInit {
constructor(
private configurationService: ConfigurationService,
)
{
this.gridOptions = {
enableSorting: false,
rowData: this.tableData,
columnDefs: this.tableColumns,
onGridReady: () => {
this.gridOptions.api.sizeColumnsToFit();
this.gridOptions.api.setColumnDefs(this.tableColumns);
alert(this.gridOptions.api);
}
}
}
tableData: string[] = [];
tableList: string[] = [];
tableName: string;
tableColumns: [{headerName: string, field: string}] = [{headerName: "", field: ""}];
tableRecord: {};
gridOptions: GridOptions;
ngOnInit() {
this.retrieveTableList();
}
retrieveTableList(){
/*blah blah*/
}
retrieveTableData(){
/*blah blah*/
this.configurationService.retrieveTableData(this.schemaFullname, this.tableName).subscribe(data => {
/* GETTING tableColumn HERE from the service*/
this.gridOptions.api.setColumnDefs(this.tableColumns);
}, error => {
console.error(error);
this.alertService.error("Get table data error", "No table data retrieved from data source for " + this.tableName);
})
}
}
正如您的评论所说,
It works now after I added [gridOptions]="gridOptions" in html.
你知道它为什么有效吗?
在您的代码中,您在构造函数中定义了 gridOptions
。在您的 onGridReady
函数中,没有人知道从哪里添加了 api
属性(和 sizeColumnsToFit
,等等方法)。
this.gridOptions = {
enableSorting: false,
rowData: this.tableData,
columnDefs: this.tableColumns,
onGridReady: () => {
this.gridOptions.api.sizeColumnsToFit();
this.gridOptions.api.setColumnDefs(this.tableColumns);
alert(this.gridOptions.api);
}
}
当您在组件中添加 [gridOptions]="gridOptions"
时,ag-grid 组件使用 gridOptions
对象并为您注入其他 apis
。因此,它在之后起作用。
正如其他地方所建议的那样,
我已经在 class 构造函数中初始化了 gridOptions。但是当我尝试 setColumnDefs 时,它仍然给我错误:
TypeError: 无法读取未定义的 属性 'setColumnDefs'
我还缺少什么?
export class ConfigurationComponent implements OnInit {
constructor(
private configurationService: ConfigurationService,
)
{
this.gridOptions = {
enableSorting: false,
rowData: this.tableData,
columnDefs: this.tableColumns,
onGridReady: () => {
this.gridOptions.api.sizeColumnsToFit();
this.gridOptions.api.setColumnDefs(this.tableColumns);
alert(this.gridOptions.api);
}
}
}
tableData: string[] = [];
tableList: string[] = [];
tableName: string;
tableColumns: [{headerName: string, field: string}] = [{headerName: "", field: ""}];
tableRecord: {};
gridOptions: GridOptions;
ngOnInit() {
this.retrieveTableList();
}
retrieveTableList(){
/*blah blah*/
}
retrieveTableData(){
/*blah blah*/
this.configurationService.retrieveTableData(this.schemaFullname, this.tableName).subscribe(data => {
/* GETTING tableColumn HERE from the service*/
this.gridOptions.api.setColumnDefs(this.tableColumns);
}, error => {
console.error(error);
this.alertService.error("Get table data error", "No table data retrieved from data source for " + this.tableName);
})
}
}
正如您的评论所说,
It works now after I added [gridOptions]="gridOptions" in html.
你知道它为什么有效吗?
在您的代码中,您在构造函数中定义了 gridOptions
。在您的 onGridReady
函数中,没有人知道从哪里添加了 api
属性(和 sizeColumnsToFit
,等等方法)。
this.gridOptions = {
enableSorting: false,
rowData: this.tableData,
columnDefs: this.tableColumns,
onGridReady: () => {
this.gridOptions.api.sizeColumnsToFit();
this.gridOptions.api.setColumnDefs(this.tableColumns);
alert(this.gridOptions.api);
}
}
当您在组件中添加 [gridOptions]="gridOptions"
时,ag-grid 组件使用 gridOptions
对象并为您注入其他 apis
。因此,它在之后起作用。