当我尝试使用next()添加变量时,BehaviorSubject为下一个函数提供错误。“我得到错误this.count.next不是函数”

时间:2017-09-27 15:58:32

标签: javascript angular typescript rxjs

在Angular服务中,我有一个变量计数,我想在每次更新时观察它,我想将更新的值设置为另一个组件中的另一个变量。

import {BehaviorSubject} from "rxjs/BehaviorSubject";
import 'rxjs/Rx';

export class DashboardService{
  count = new BehaviorSubject<number>(0);
  count$=this.count.asObservable();

  addCount(data){
    this.count.next(data);
  }
}

我得到了错误,尽管我已经导入了所有相关的库。任何想法为什么我得到这个?谁能告诉我代码发生了什么?

} rxJs版本5.4.3最新!

1 个答案:

答案 0 :(得分:0)

试试这个:

export class DashboardService {
    count = new BehaviorSubject<number>(0);
    count$ = this.count.asObservable();

    public addCount = (data) => {
      this.count.next(data);
    }
}

您遇到的问题是您在函数内部addCount被更改的上下文中使用this(即指向其他内容)。在打字稿中使用基于lamda的函数可确保不会发生这种情况。但这并不是一直使用它们的借口。

我建议您在lambda/arrow functions上稍微阅读一下,查看thisjavascripttypescript中的工作原理可能也是一个好主意。< / p>