Angular 从delete节点vis.js的操作调用自定义方法

Angular 从delete节点vis.js的操作调用自定义方法,angular,vis.js-network,Angular,Vis.js Network,我正在尝试将vis.js(v4.21.0)与Angular(v4.2.4)一起使用 我想在删除节点之前调用一个自定义方法,因此我在操纵中添加了一个方法来删除节点,但无法从中调用自定义方法 My component.ts 导出类MyComponentComponent实现OnInit{ 私有图形数据:任何; 私人选择:任何; 构造函数(){} 恩戈尼尼特(){ 让nodeList=new Vis.DataSet([ {id:1,标签:'Node 1'}, {id:2,标签:'Node 2'}, {

我正在尝试将vis.js(v4.21.0)与Angular(v4.2.4)一起使用

我想在删除节点之前调用一个自定义方法,因此我在操纵中添加了一个方法来删除节点,但无法从中调用自定义方法

My component.ts

导出类MyComponentComponent实现OnInit{
私有图形数据:任何;
私人选择:任何;
构造函数(){}
恩戈尼尼特(){
让nodeList=new Vis.DataSet([
{id:1,标签:'Node 1'},
{id:2,标签:'Node 2'},
{id:3,标签:'Node 3'},
{id:4,标签:'Node 4'},
{id:5,标签:'Node 5'}
]);
//创建具有边的阵列
让edgeList=new Vis.DataSet([
{从:1到:3},
{从:1到:2},
{从:2到:4},
{从:2到:5}
]);
this.graphData={nodes:nodeList,edges:edgeList};
此选项={
操纵:{
启用:对,
initiallyActive:false,
addNode:true,
补充:是的,
editEdge:没错,
deleteNode:函数(nodeData,回调){
this.deleteNodeFunction(nodeData);//定义如下
`此处未定义获取问题“此”`
},
是的,
}
};
让网络;
试一试{
const container=document.getElementById('test');
网络=新的可视网络(容器,this.graphData,this.options);
}捕获(e){
console.log(e.message)
}
}
deleteNodeFunction(nodeData){
//在这里做点什么
//可能需要调用其他方法。
}
}
试试这个:

deleteNode: function(nodeData,callback) {
  this.deleteNodeFunction(nodeData); // defined below
}.bind(this),
发生的情况是,当Vis.js调用您的
deleteNode()
方法时,它使用自己的上下文调用它,因此
这个
现在指的是网络,而不是您的myComponent实例。网络没有
deleteNodeFunction()
方法,因此不会发生任何事情

调用
.bind(this)
应该可以防止该问题。或者,您可以使用具有自动绑定的箭头函数:

deleteNode: (nodeData,callback) => {
  this.deleteNodeFunction(nodeData); // defined below
},