Angular : 通过范围滑块更改 setinterval 计时器

Angular : changing setinterval timer via range slider

我正在使用 ionic 4 和 angular。我想用 ionic range slider 。范围滑块让用户可以通过移动滑块来更改值的范围。 l 想改变setInterval的值来减少刷新或提高刷新速度。

我的代码

  time : 600 ;
  speed = 300;
  private interval;

rangeChanged(){
    this.speed = 300 * this.time;

    console.log(this.time)
  }


  play() {

    this.interval = setInterval(() => {

   // i deleted my code here 

    }, this.time);
  }

问题是,rangeChanged 函数中的 this.time 没有得到更新 .当我更改范围滑块时,值 setInterval 仍然相同!没有更新,在那种情况下我必须停止 setInterval 然后重新开始,即使他获得新值。我的观点是如何让它以 setInterval 速度实时更新值?

html

<ion-range min="300" max="600" [(ngModel)]="time" color="secondary"
   (ngModelChange)="rangeChanged($event)" step="10" debounce="500">
    <ion-label range-left>3</ion-label>
    <ion-label range-right>10</ion-label>
  </ion-range>

当您当时使用 this.time 值调用方法 play() 时,方法 setInterval 已经被调用。

如果您想更改回调方法中的任何其他值,即 setinterval 的第一个参数,您可以将其与一些 getter 方法挂钩,但是如果您想更改间隔,则必须清除并再打电话

rangeChanged(e){
  this.speed = 300 * e;

  console.log(e.target.value)
  play(e)
}

play(time) {
  if(this.interval) {
    clearInterval(this.interval)
  }

  this.interval = setInterval(() => {
    const r = getAnotherValue(); // will work
  }, time);
}