[首先,我尝试在 stackoveflow 以及 aggrid 会员支持论坛上进行搜索。对于我的问题,找不到任何相关的匹配项。所以在这里发布]
我在 angular2 组件中使用用于企业(跟踪版)的 ag-grid。在我的组件中,我有一个带有项目列表的选择下拉列表。在选择一个时,我实际上正在加载其中包含 ag-grid 的组件。现在,问题是,在选择另一个选项时,ag-grid 没有再次初始化。因此,我得到了不受欢迎的行为。下面是我的 sudo 代码。如果有更好的选择,请告诉我。我希望有一种方法可以做到这一点,也许,使用生命周期钩子。
// parent.component.ts
import..
@Component({
selector: 'card',
template: '
....
<select [(ngModel)]="value" (change)="somethingToDo()">
<option *ngFor="let f of foo" [value]="f.id">{{f.value}}</option>
</select>
.....
<div *ngIf="value > 0">
<my-grid-component [optionValue]="value"></my-grid-component>
</div>
....
...
'
})
// my-grid.component.ts
import ..
@Component({
selector: 'my-grid-component',
template: '
....
<ag-grid-angular #agGrid style="width: 100%; height: 500px;" class="ag-fresh"
[gridOptions]="gridOptions"
(modelUpdated)="onModelUpdated()"
(selectionChanged)="onSelectRow($event)">
</ag-grid-angular>
.....
'
})
export class MyGridComponent implements onInit, onChanges {
gridOptions;
optionValue;
constructor() {
gridOptions = {};
}
ngOnChanges() {
if(optionValue>0) {
this.doSomething();
}
}
doSomething() {
// I have to initialise the grid with new data and coldef.
this.gridOptions.enableFilter = true;
this.gridOptions.enableFilter = true;
this.gridOptions.enableSorting = true;
this.gridOptions.animateRows = true;
this.gridOptions.floatingFilter = true;
this.gridOptions.rowSelection = 'multiple';
....
this.gripOptions.api.setRowData( this.getDataForValue(this.optionValue));
this.gripOptions.api.setColumnDefs( this.getColDefsForValue(this.optionValue));
....
}
getDataForValue(inputValue) {
// Server call
}
getColDefsForValue(inputValue) {
// Server call
}
}