TL; DR:
https://plnkr.co/edit/QP5skRU1MJ3ZoOtlA15I?p=preview
为什么要使用服务的本地变量而不是订阅该服务中的observable?
令人困惑的原因示例:
在插件中,您会看到我有两个组件和一个服务。这两个组件共享一个Observable,它存在于该服务中。
在服务中,我更新一个公共变量并将该值推送给观察者。
这段代码对我来说似乎是多余的,但我在Angular2教程中都看到了它。
的src / number.ts
this.num = {
num: new Date().getTime()
};
this.observer.next(this.num);
我为什么要做其中一个?我更喜欢订阅方法,但他们似乎做同样的事情。我错过了什么?
注意: setInterval和NgZone垃圾仅用于演示目的。在现实生活中,这些数据将来自HTTP,它将更新变量和/或推送给订户。因为我每秒都抓住时间,所以我也不得不使用NgZone。
答案 0 :(得分:1)
我猜这是关于使用BehaviorSubject
,你只在发出一个事件时得到一个值,但是你经常想要最后一个(当前)值以及后来关于更新的事情。
您可以使用@TopComponent.Registration(mode = "explorer", openAtStartup = false,
roles = "Test Role")
立即再次向新订阅者发出最后一次发出的值,或者如果您不熟悉Rx,则可能会使用问题中提到的模式。这允许你
this.prop = this.service.num; this.service.observable.subscribe(val => this.prop = val);
立即获取最后一个值,并使用observable进行更新。