2016-08-04 13 views
1

Ich bin ziemlich neu in Angular 2. Möchte fragen, wie kann ich auf "task_title" in der startTimer() zugreifen. Alles, was ich von der console.log() bekam, ist nicht definiert. Ich glaube, das "Dies" zeigte auf die Funktion selbst, so dass ich den Wert von "task_title" nicht bekommen konnte.Angular 2 "this" kann auf globale Variable in geschachtelter Funktion nicht zugreifen

Gibt es irgendwie kann ich auf globale Variable in Typescript in einer verschachtelten Funktion zugreifen?

export class DashboardComponent { 

    task_title: string; 

    myTimer = setTimeout(this.startTimer, 2000); 

    updateTask(event: any){ 
     clearTimeout(this.myTimer); 
     this.task_title = event.target.value; 
     this.myTimer = setTimeout(this.startTimer, 2000); 
    } 

    startTimer() { 
     console.log(this.task_title); 
     this.myTimer = setTimeout(this.startTimer, 2000); 
    }; 
} 

Ergebnis: Nicht definiert.

Antwort

6

Mit den Pfeil Funktionen oder .bind(this) den Umfang der this

myTimer = setTimeout(this.startTimer.bind(this), 2000); 
myTimer = setTimeout(() => this.startTimer(), 2000); 
+0

Es funktioniert zu behalten !!! Danke für die Hilfe :) – Danzeeeee

1

Verwenden Referenz für diese wie var self = this

export class DashboardComponent { 

var self=this; 


task_title: string; 

myTimer = setTimeout(self.startTimer, 2000); 

updateTask(event: any){ 
    clearTimeout(self.myTimer); 
    self.task_title = event.target.value; 
    self.myTimer = setTimeout(self.startTimer, 2000); 
} 

startTimer() { 
    console.log(self.task_title); 
    self.myTimer = setTimeout(self.startTimer, 2000); 
}; 
}