我有两种不同的网格配置(表示为两个gridOption
对象)。一种是加载本地数据,另一种是使用带有无限行模型的elasticsearch数据源。
如果我将它们连接到模板[gridOptions]="localOptions"
中,则[gridOptions]="elasticGridOptions"
都可以很好地工作。
这是我当前的组成部分,(从原理上来说)我想要实现的目标:
@Component({
selector: 'app-gridtest',
styleUrls: ['./gridtest.component.css'],
template: `
<ag-grid-angular
id="grid"
style="width: 100vw;"
[style.height] = 'height'
class="ag-theme-balham ag-grid"
[columnDefs]="columnDefs"
[gridOptions]="gridOptions"
(gridReady)="onGridReady($event)"
></ag-grid-angular>
<button (click)="switchOptions()"></button>
`
})
export class GridtestComponent implements OnInit{
constructor(
private esDs: ElasticDatasource
) {}
height = '0px';
gridApi: any;
columnsApi: any;
gridOptions: {};
columnDefs = [
{headerName: 'Id', field: 'id'},
{headerName: 'Title', field: 'title'}
];
elasticGridOptions = {
rowModelType: 'infinite'
};
localOptions = {
rowData: [
{id: '1', title: 'foo'},
{id: '2', title: 'bar'},
{id: '3', title: 'baz'}
]
};
@HostListener('window:resize', ['$event'])
resizeGrid(){
this.height = `${$(window).innerHeight()-60}px`;
}
ngOnInit(): void {
this.elasticGridOptions['datasource'] = this.esDs;
}
onGridReady(params){
this.resizeGrid();
this.gridApi = params.api;
this.columnsApi = params.columnApi;
}
isElastic = false;
switchOptions(){
if(this.isElastic){
this.gridOptions = this.localOptions;
this.isElastic = false;
}else{
this.gridOptions = this.elasticGridOptions;
this.isElastic = true;
}
//reinitialize / update options or grid??
}
}
我将[gridOptions]
连接到通用选项对象,然后在按钮上单击“我尝试在两者之间切换”。有趣的是,即使我将this.gridOptions = this.localOptions;
作为最后一行放在onGridReady
中,它也不起作用。我觉得我需要以某种方式告诉网格实际重新加载选项或重新初始化自身,但是我在文档中找不到它。
欢呼
答案 0 :(得分:0)
当前,gridOptions
无法动态重新加载。
检查这里:
Dynamically Setting Properties for ag-Grid
您需要重新渲染页面。
无论如何,您可以处理resolver
部分的需求以准备options
,然后在component
中使用它。