繁体   English   中英

Angular2变量“未定义”外部方法

[英]Angular2 Variable 'Undefined' Outside Method

我正在订阅一种方法中的可观察对象,并且需要在另一种方法中取消订阅它。 从init函数调用subCounter()方法,其内容工作正常。

subCounter() {
  this.fml = this.playerService.counter(this.song).subscribe(data => {
    this.pos = data;
    this.time.position = Math.round(this.pos);
    this.time.dur = this.song.duration - this.time.position;
    this.time.durMinutes = Math.floor(this.time.dur / 60);
    this.time.durSeconds = ('0' + Math.ceil(this.time.dur - this.time.durMinutes * 60)).slice(-2);
    this.time.posMinutes = Math.floor(this.time.position / 60);
    this.time.posSeconds = ('0' + Math.ceil(this.time.position - this.time.posMinutes * 60)).slice(-2);
    this.time.percent = this.time.position / this.song.duration * 100;
  })
  // This works just fine
  console.log(this.fml);
}

当我调用touchActivate()函数时,它包含一个取消订阅的函数,用于存储该变量,但是由于this.fml.unsubscribe是未定义的,因此会引发错误。 控制台记录this.fml返回一个未定义的对象。

touchActivate() {
  console.log(this.fml);
  this.fml.unsubscribe();
}

在类的顶部,我定义了以下变量: public fml: any;

尝试这个:

$('.range-slider').on("touchstart", this.touchActivate.bind(this));

或使用箭头功能保留this

$('.range-slider').on("touchstart", () => this.touchActivate());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM