2017-04-07 48 views
0

我在我的組件中有2個函數。 onElementClick綁定到HTML中的元素。所以每次我點擊該元素的時候,我得到:Angular 2 this.generateTree不是函數

this.showHalo不是一個函數

爲什麼會出現這樣的情況?

showHalo(view, opt) { 
    // Code 
} 

onElementClick(view) { 
// Code 
    function click() { 
    this.showHalo(view, { animation: true }); 
    } 
} 

我甚至試過這個,但它是同樣的事情。

myFunc(){ 
    console.log("TEST"); 
} 

onElementClick(view) { 
    self = this; 
    self.myFunc(); 
} 
+1

也分享HTML。 –

+3

你應該閱讀下面的內容:http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback/20279485#20279485你的'this'不是指你的組件裏面該功能範圍。 – echonax

+0

在你更新的問題部分,你甚至不需要保存'this',它應該像簡單的調用'myFunc()' – anoop

回答

0

更正您的this指針。如:

showHalo(view, opt) { 
    // Code 
} 

onElementClick(view) { 
// Code 
var _this = this; 
    function click() { 
    _this.showHalo(view, { animation: true }); 
    } 
} 
+0

@masterfan一樣工作:在你更新的問題部分,你甚至不需要保存'this ',它應該像簡單的調用'myFunc()' – anoop

0

該對象在本地函數範圍內不可用。您需要將其分配給本地範圍變量並在click功能中使用它。

showHalo() { 
    console.log('hihih') 
    } 

    onElementClick() { 
    console.log('2323'); 
    var self = this; 
    click(); 
    function click(){ 
     self.showHalo(); 
    } 
+0

這不應該是pbm ..你試過上面的代碼嗎? –

+0

從您正在調用onElementClick函數的位置分享HTML部分 –

相關問題