我对Angular 2很新。想问一下如何访问" task_title"在startTimer()中。 我从console.log()得到的所有内容都是未定义的。我相信"这个"指向函数本身所以我无法获得" task_title"的价值。
无论如何我可以在嵌套函数中访问Typescript中的全局变量吗?
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);
};
}
结果:未定义。
答案 0 :(得分:10)
使用箭头功能或.bind(this)
保留this
myTimer = setTimeout(this.startTimer.bind(this), 2000);
myTimer = setTimeout(() => this.startTimer(), 2000);
答案 1 :(得分:2)
使用像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);
};
}
答案 2 :(得分:1)
使用通话或申请
myTimer = setTimeout(this.startTimer.call(this), 2000);
myTimer = setTimeout(this.startTimer.apply(this), 2000);