Ich möchte nur wissen, wie man eine globale Variable aus einer Klassenfunktion in Angular 5 heraus erstellt. Mein Problem ist, dass ich eine setInterval-Variable in einer Funktion erstelle, aber dann weiß ich nicht, wie ich auf diese Variable zugreifen kann, um clearInterval ( var) in einer anderen Funktion. Irgendwelche Ratschläge zur Lösung dieses Problems?

Hier ist ein einfacher Fortschrittsbalken, der mein Problem erklärt: // clearInterval (RunningTimer); ist, wo ich festsitze

https://stackblitz.com/edit/angular-y8zcio?file=app%2Fapp.component.html

0
Frank 18 Apr. 2018 im 10:46

3 Antworten

Beste Antwort

Fügen Sie einfach ein Feld anstelle einer lokalen Variablen hinzu:

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
Titian Cernicova-Dragomir 18 Apr. 2018 im 07:56

Ich denke, Sie betrachten dies aus dem falschen Blickwinkel. Warum sollten Sie RunningTimer löschen, eine Variable in einem Bereich, der dort definiert ist? Jedes Mal, wenn Sie diese Funktion eingeben, handelt es sich um eine neue Variable. Das Problem besteht darin, dass Sie sie benötigen um die iProgressValue-Variable zu löschen, also

Ersetzen

//clearInterval(RunningTimer);

Mit

this.iProgressValue = 0;

Und du bist so ziemlich fertig.

0
StefanDimi 18 Apr. 2018 im 21:02

Warum erstellen Sie keinen Dienst, der eine Funktion zum Festlegen und Löschen der Variablen bietet? Dieser Service kann in jede Komponente eingefügt werden, in der er benötigt wird.

export class YourService{

      private _yourVar: yourVarDefintion;

      public get yourVar(): yourVarDefintion{
        return this._yourVar;
      }

      public set yourVar(id: yourVarDefintion) {
        this._yourVar = id;
      }
}
1
ICantSeeSharp 18 Apr. 2018 im 07:54