Функция setInterval работает в других компонентах также в Angular 6 - PullRequest
0 голосов
/ 11 октября 2018

Я новичок в Angular (6).Я использую setInterval функцию в компоненте.Это работает, но когда я перехожу на другой маршрут, setInterval продолжает выполняться.Пожалуйста, помогите мне определить причину.

//Calling it in ngOnit()
autosavedraftsolution() {
      setInterval(() => {
        console.log(this.draftSolutionForm);
        if (this.solutionTitleValid) {
          this.savedraftsolution();
        }
      }, this.autoSaveInterval);
    }

//savedraftsolution()
  savedraftsolution() {
    console.log("saving..");

    this.connectService.saveDraftSolution({
      Title: this.draftSolutionForm.get('Title').value,
      Product: this.draftSolutionForm.get('Product').value
    } as Draftsolution).subscribe(draftsol => {
      console.log("saved");

    });
  }

Он продолжает показывать мне сообщение "сохраняю .." и "сохранено" в консоли.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Доминик прав.Вы должны очистить интервал, когда компонент уничтожен.Вы можете сделать что-то вроде этого

ngOnInit(){
    this.saveInterval = setInterval(() => {}, 1000)
}

ngOnDestroy(){
    clearInterval(this.saveInterval)
}

Убедитесь, что ваш компонент реализует OnInit и OnDestroy.

0 голосов
/ 11 октября 2018

Вам нужно позвонить clearInterval, чтобы остановить его, когда ваш компонент отключается:

this.intervalId = setInterval(...);

Когда ваш компонент отключается :

ngOnDestroy() {
  clearInterval(this.intervalId);
}
...