Angular 无法在上下文菜单中执行函数

Angular 无法在上下文菜单中执行函数,angular,typescript,ag-grid,Angular,Typescript,Ag Grid,我正在尝试调用上下文菜单中的函数 getContextMenuItems(params) { console.log(params.node.data) var result = [ { name: "Delete", action : function () { this.deletePriceFactor(params.node.data); } , cssCla

我正在尝试调用上下文菜单中的函数

getContextMenuItems(params) {
    console.log(params.node.data)
    var result = [

      {
        name: "Delete",
        action : function () { 
         this.deletePriceFactor(params.node.data);
        }
        ,
        cssClasses: ["redFont", "bold"]
      },
      {
        name: "Audit"
      }

    ]
      return result;
    }

 deletePriceFactor = (rowdata)  =>{
    this.priceFactorService.deleteEntry(rowdata.exchangeCode, rowdata.productCode, rowdata.secType).subscribe(pricefactors => {
    });

  }
我一直收到一个错误: 错误类型错误:this.deletePriceFactor不是函数 at Object.action(价格因子组件ts:162)

我尝试过使用如下箭头函数:

action : () =>  { 
         this.deletePriceFactor(params.node.data);
        }
上述操作会导致另一个错误:core.js:1673错误类型错误:如果您的html类似于:

<ag-grid-angular
      [getContextMenuItems]="getContextMenuItems"
      .
      .
      .
    ></ag-grid-angular>
因此,
this
关键字指向您的组件

之后,调用您的方法,如下所示:

操作:()=>this.deletePriceFactor(params.node.data)

您可以在网格上下文中添加对此的引用-

this.gridOptions.context = {
                    thisComponent : this
                };
然后,可以按如下方式访问此组件-

private getContextMenuItems(params) { 
    console.log(params);
    var result = [
        { // custom item
            name: 'Sample',
            action: function () { params.context.thisComponent.callMe(); },
            icon: '<i class="fa fa-pencil" />'
        }];
    return result;
}
private getContextMenuItems(参数){
控制台日志(params);
var结果=[
{//自定义项
名称:'样本',
操作:函数(){params.context.thisComponent.callMe();},
图标:“”
}];
返回结果;
}
对于任何其他回调,如cellRenderer,也可以这样做

参考:


它对我有用

什么是Object.action?var结果是一个对象列表。Action是调用我函数的obect中的一个键,在第一个版本中它将不起作用,`function(){}`更改此的上下文我如何更改此的上下文?您可以添加JSFIDLE ou stackblitz代码吗?我将简单地测试这是一个伟大的洞察力。谢谢