angular 2从服务订阅boolean

时间:2016-10-14 21:00:03

标签: angular

我有一个具有更改布尔值的服务,我想订阅组件中的布尔更改。如何实现这一目标?

这是我的服务......

private subBoolShowHideSource = new Subject<boolean>();

subBoolShowHide$ = this.subBoolShowHideSource.asObservable();


showHide(eventValue: boolean) {
  this.subBoolShowHideSource.next(eventValue);
  console.log("show hide service " + eventValue);
}

这是我试图阅读bool值的组件......

boolShowGTMDetails: any;
subscription: Subscription;

constructor(private service: ShowHideService){
  this.subscription = this.service.subBoolShowHide$.subscribe(
    (data:boolean) => {
      this.boolShowGTMDetails = data,
      error => console.log(error),
      console.log("winner winner chicken dinner");
    }
  );
}

基本上,变化检测不起作用,非常感谢任何帮助,提前感谢!

2 个答案:

答案 0 :(得分:2)

您的订阅中存在一些格式问题。这应该有效:

   this.subscription = this.service.subBoolShowHide$.subscribe(
       (data:boolean) => { this.boolShowGTMDetails = data },
       error => console.log(error),
       () => console.log("winner winner chicken dinner")
   );

答案 1 :(得分:1)

我发现了我的问题......

我在我的两个组件providers:[ShowHideService],中都有这个,当然这会创建两个不同的服务实例。所以我从两个组件中删除了这个,只需在我的app.modules中调用一次,一切正常。菜鸟在我的最后移动 facePalm -_-