我只想知道如何在Angular 5中的类函数中创建一个全局变量。我的问题是我在一个函数中创建了一个setInterval变量,但后来我不知道如何访问它变量在不同的函数中执行clearInterval(var)。关于如何解决这个问题的任何建议?
这是一个简单的进度条,解释了我的问题,注释掉// clearInterval(RunningTimer);是我被困在哪里
答案 0 :(得分:1)
只需添加一个字段而不是局部变量:
export class AppComponent {
sStatus = "Inactive";
iProgressMax = 100;
iProgressValue = 0;
private runningTimer: number
Run() {
this.sStatus = "Running...";
this.runningTimer = setInterval(() => {this.Running()}, 500);
}
Running() {
this.iProgressValue = this.iProgressValue + 20;
if (this.iProgressValue >= this.iProgressMax) {
console.log("Completed")
clearInterval(this.runningTimer);
this.sStatus = "Complete";
}
}
}
答案 1 :(得分:1)
为什么您不创建提供设置和清除变量功能的服务?可以在需要的每个组件中注入此服务。
export class YourService{
private _yourVar: yourVarDefintion;
public get yourVar(): yourVarDefintion{
return this._yourVar;
}
public set yourVar(id: yourVarDefintion) {
this._yourVar = id;
}
}
答案 2 :(得分:0)
我认为你是从错误的角度看这个,你为什么要清除RunningTimer,这是一个在那里定义的范围内的变量,每次你输入该函数它将是一个新的变量,问题是你需要清除iProgressValue变量,所以
替换
//clearInterval(RunningTimer);
与
this.iProgressValue = 0;
你已经完成了很多工作。