我的目标是在右键单击进入单元格时显示上下文菜单。
但是我的代码没有响应右键单击。 我无法找到我错误的地方。
以下是我的代码。 我写了日志“console.log(”getContentMenuItems()“);”但是这个日志没有打印出来。
我的并网application.component.ts
export class MyGridApplicationComponent implements OnInit, OnDestroy {
gridOptions: GridOptions;
private subscription: Subscription;
private isPubPark: boolean = false;
private getContextMenuItems;
constructor(private commCodeGridOptionService: CommCodeGridOptionService, private commonService: CommonService) {
console.log("MyGridApplicationComponent: Constructor()");
let params = new URLSearchParams(window.location.search.substring(1));
this.isPubPark = (params.get('isPubPark') == 'true');
console.log("params:" + params + ", " + params.get('isPubPark') + ", isPubPark: " + this.isPubPark);
this.commCodeGridOptionService.setTarget(this.isPubPark);
this.commCodeGridOptionService.fetchColumnDefs();
this.commCodeGridOptionService.getColumnDefMessage().subscribe(message => {
console.log("MyGridApplicationComponent:getColumnDefMessage()");
this.gridOptions.columnDefs = this.commCodeGridOptionService.gridOptions.columnDefs;
this.gridOptions.api.setColumnDefs(this.gridOptions.columnDefs);
});
this.commCodeGridOptionService.getRowDataMessage().subscribe(message => {
console.log("MyGridApplicationComponent getRowDataMessage().subscribe()");
this.gridOptions.rowData = this.commCodeGridOptionService.commcodeSitesList;
//The gridOptions api will be set and ready to use once the grid's gridReady event has been called.
this.gridOptions.api.setRowData(this.gridOptions.rowData);
});
this.getContextMenuItems = function getContextMenuItems(params) {
console.log("getContentMenuItems()");
var result = [
{
name: "Always Disabled",
disabled: true,
tooltip: "Very long tooltip, did I mention that I am very long, well I am! Long! Very Long!"
},
"separator",
"copy"
];
return result;
};
}
ngOnInit() {
console.log("MyGridApplicationComponent: ngOnInit()");
this.gridOptions = {};
this.subscription = this.commonService.notifyObservable$.subscribe((res) => {
console.log(res);
if (res.hasOwnProperty('option') && res.option === 'onCommCodeSelected') {
this.changeCommCodeFilter(res.value);
}
});
}
//set filter to commcode when click commCodeDesc component
public changeCommCodeFilter(commcode: string) {
console.log("changeCommCodeFilter() ", commcode);
let ageFilterComponent = this.gridOptions.api.getFilterInstance('commCode');
ageFilterComponent.setModel({
type: 'equals',
filter: commcode,
filterTo: null
});
this.gridOptions.api.onFilterChanged();
window.scrollTo(0,0);
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
}
我的并网application.component.html
<h3><a href='/?isPubPark={{!isPubPark}}'></a></h3>
<app-comm-code-selectbox></app-comm-code-selectbox>
<div style="width: 100%; height:700px">
<ag-grid-angular #agGrid
style="width:100%;height:100%;"
class="ag-fresh"
[gridOptions]="gridOptions"
[enableRangeSelection]="true"
[allowContextMenuWithControlKey]="true"
[getContextMenuItems]="getContextMenuItems"
rowHeight=100
enableSort
enableFilter
enableColResize>
</ag-grid-angular>
</div>
答案 0 :(得分:2)
上下文菜单是单独的企业功能,因此需要单独安装:
npm install ag-grid-enterprise
在为角度导入ag网格后,必须将其包含在模块中,如下所示:
import { AgGridModule } from 'ag-grid-angular';
import'ag-grid-enterprise';
它现在可以使用了!
答案 1 :(得分:2)
您必须从ag-grid企业版安装菜单模块:
npm install @ag-grid-enterprise/menu
使用组件中的模块:
import { MenuModule } from '@ag-grid-enterprise/menu';
配置网格以使用此模块:
在.ts中:
gridModules = [MenuModule, ...];
在模板中:
<ag-grid-angular [modules]="gridModules" ...
您可能还需要设置suppressContextMenu = false;
并实现getContextMenuItems
函数