2017-04-07 2 views
0

Ich habe 2 Funktionen in meiner Komponente. onElementClick ist an ein Element in HTML gebunden. Also habe ich jedes Mal auf dieses Element klicken, erhalte ich:Angular 2 this.generateTree ist keine Funktion

this.showHalo ist keine Funktion

Warum ist dies ein Fall?

showHalo(view, opt) { 
    // Code 
} 

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

Ich habe es sogar versucht, aber es ist die gleiche Sache.

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

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

Aktien. –

+3

Sie sollten dies lesen: http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback/20279485#20279485 Ihre 'This' bezieht sich nicht auf Ihre Komponente im Inneren das funktioniert Umfang. – echonax

+0

In Ihrem aktualisierten Frageabschnitt müssen Sie nicht einmal 'this' beibehalten, es sollte wie ein einfacher Aufruf 'myFunc()' – anoop

Antwort

0

korrigieren Sie Ihre this Zeiger. Wie:

showHalo(view, opt) { 
    // Code 
} 

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

@masterfan funktionieren: In Ihrem aktualisierten Frageabschnitt müssen Sie nicht einmal 'this' aufbewahren ', sollte es funktionieren wie einfacher Anruf' myFunc() ' – anoop

0

Dieses Objekt ist im lokalen Funktionsumfang nicht verfügbar. Sie müssen dies der lokalen Bereichsvariablen zuweisen und sie in der Klickfunktion verwenden. Auch

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

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

Das sollte nicht der PBM sein .. Haben Sie versucht, oben genannten Code? –

+0

Teilen Sie auch den HTML-Teil von wo Sie dieElementClick-Funktion aufrufen –

Verwandte Themen