使用GoJS的Angular 2 typescript函数中未识别类的变量

使用GoJS的Angular 2 typescript函数中未识别类的变量,angular,gojs,Angular,Gojs,我有一个应用程序,它使用: 角度2 可视化的GoJS 它包括: 父组件:src/app/search.Component.ts 它由一个搜索栏和一些区域组成,在这些区域中,对服务器的API调用将显示按钮 子组件:src/app/search-details.Component.ts 它由一个 在子组件的SearchDetailsComponent类中,有一个名为nodeClicked的简单函数,如下所示: nodeClicked(e, node) { // show the name of

我有一个应用程序,它使用:

角度2 可视化的GoJS 它包括:

父组件:src/app/search.Component.ts

它由一个搜索栏和一些区域组成,在这些区域中,对服务器的API调用将显示按钮

子组件:src/app/search-details.Component.ts

它由一个

在子组件的SearchDetailsComponent类中,有一个名为nodeClicked的简单函数,如下所示:

nodeClicked(e, node) {
  // show the name of the clicked node on the console
  console.log(node.data.text);
  this.checkString = node.data.text // HERE is the ERROR....
}
click: (e: go.InputEvent, obj: go.GraphObject) => { this.nodeClicked(e, obj); }
每次呈现图表并且用户单击任何节点时,都会出现一个错误,说明:

TypeError:这是未定义的

它所指的是类SearchDetailsComponent中声明的checkString变量

如何不识别检查字符串?我已经在上面定义了它。每次单击节点并调用HTTPGET时,我希望调用的API服务都会显示此错误

我做错了什么

Node.click属性是一个将在不绑定此属性的情况下调用的函数


如果需要从事件处理程序中访问外部组件,您当然可以指定一个作为闭包的nodeClicked函数。

正如@WalterNorthwoods的回答所示。我为节点创建了一个内联函数。单击如下所示:

nodeClicked(e, node) {
  // show the name of the clicked node on the console
  console.log(node.data.text);
  this.checkString = node.data.text // HERE is the ERROR....
}
click: (e: go.InputEvent, obj: go.GraphObject) => { this.nodeClicked(e, obj); }

nodeClicked函数现在可以调用,this.checkString值将完美显示。

谢谢。又来救援了!我调用了一个内联的click:e:any,node:any=>{this.nodeClickede,node},它的工作原理就像一个charmYour arg类型可能更精确。下面是go.d.ts中的声明:click:e:InputEvent,obj:GraphObject=>void;