Angular2:可观察订阅与单身成员

时间:2016-04-15 17:45:17

标签: typescript angular angular2-services

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。

1 个答案:

答案 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进行更新。

相关问题