Anular5 - "这个"不在ready()内工作

时间:2018-02-19 14:15:29

标签: angular typescript callback

我有一个graph.component.ts

this.cContainer = cytoscape ( {  
    ready: function(e) { 
      this._dataService.setResultData();
    }
  });

但是我明白了 ERROR TypeError: Cannot read property 'setResultData' of undefined

..所以this似乎未知,看起来是正确的,因为我在回调中,所以this被称为ready - 回调。

但是如何从_dataService.setResultData() - 回调中调用ready()

2 个答案:

答案 0 :(得分:3)

使用箭头功能从声明上下文中捕获this。对于function this由来电者决定,可能不是您的班级:

this.cContainer = cytoscape ( {  
    ready: (e) => { 
      this._dataService.setResultData();
    }
  });

答案 1 :(得分:1)

this和胖箭ES6功能之间的function存在差异。后一版本不会松散this。因此,您可以使用

代替当前功能

ready: e => this._dataService.setResultData();

编辑:它也可能是 ready: function(e) { this._dataService.setResultData(); }.bind(this)

但这只是丑陋......