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代码吗?我将简单地测试这是一个伟大的洞察力。谢谢