如何检测Angular2变量的变化

问题描述 投票:8回答:1

我这是在构造函数运行之前设置以下配置对象:

config: Object = {
     onSlideChangeEnd : function(slide:any) {
          this.currentSlideIndex = slide.activeIndex;
     }
};

我要通知变化的服务,问题是,当配置设置服务尚不可用:

 constructor(private user: UserService,
             private layout: LayoutService) {
 }

我怎样才能通知该变量变化的服务?

angular angular2-services
1个回答
32
投票

那么,作为建议使用观测量,这是不是真的这么大的麻烦,那很好。这不是比实际几行。

声明中一些常见的服务,他们为同一个共享服务,e.g声明为模块提供商的服务,让您不相同服务的两个实例结束。一个Subject添加到该服务并发出值的方法:

public configObservable = new Subject<number>();

emitConfig(val) {
  this.configObservable.next(val);
}

而在组件需要设置的配置:

emit(val) { // your value you want to emit
  this.myService.emitConfig(val);
}

然后订阅在你需要它的价值:

constructor(private myService: MyService) {
  this.myService.configObservable.subscribe(value => {
    this.value = value;
  })
}

工作plunker在一个亲子互动上面的代码:

Plunker

至于你约@Input()评论,说效果很好,当父组件的亲子互动,这样,才不会真正为你在这种情况下工作。

© www.soinside.com 2019 - 2024. All rights reserved.