上下文菜单在我的 ag-grid 中不起作用

sun*_*ong 4 typescript ag-grid angular

我的目标是右键单击单元格时显示上下文菜单。

但是我的代码对右键单击没有反应。我找不到我做错的地方。

下面是我的代码。我写了日志"console.log("getContentMenuItems()");" 但是这个日志没有打印出来。

my-grid-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();
  }
}
Run Code Online (Sandbox Code Playgroud)

my-grid-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>  
Run Code Online (Sandbox Code Playgroud)

wen*_*mva 5

上下文菜单是独立的企业功能,因此需要单独安装:

npm install ag-grid-enterprise
Run Code Online (Sandbox Code Playgroud)

并且您必须在为 angular 导入 ag 网格后将其包含在模块中,如下所示:

import { AgGridModule } from 'ag-grid-angular'; 
import'ag-grid-enterprise'; 
Run Code Online (Sandbox Code Playgroud)

它现在可以工作了!