从类函数中角度声明全局变量

时间:2018-04-18 07:46:46

标签: javascript angular typescript

我只想知道如何在Angular 5中的类函数中创建一个全局变量。我的问题是我在一个函数中创建了一个setInterval变量,但后来我不知道如何访问它变量在不同的函数中执行clearInterval(var)。关于如何解决这个问题的任何建议?

这是一个简单的进度条,解释了我的问题,注释掉// clearInterval(RunningTimer);是我被困在哪里

Click here

3 个答案:

答案 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;

你已经完成了很多工作。