首页 文章

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

提问于
浏览
1

TL;DR:

https://plnkr.co/edit/QP5skRU1MJ3ZoOtlA15I?p=preview

为什么要使用服务的局部变量而不是订阅该服务中的observable?

Example of why it's confusing:

在插件中,你会看到我有两个组件和一个服务 . 这两个组件共享一个Observable,它存在于该服务中 .

在服务中,我更新一个公共变量并将该值推送给观察者 .

这段代码对我来说似乎是多余的,但我在Angular2教程中看到了它 .

src/number.ts

this.num = {
  num: new Date().getTime()
};

this.observer.next(this.num);

我为什么要做其中一个?我更喜欢订阅方法,但他们似乎做同样的事情 . 我错过了什么?

NOTE: setInterval和NgZone垃圾仅用于演示目的 . 在现实生活中,这些数据将来自HTTP,它将更新变量和/或推送给订户 . 因为我每秒都 grab 时间,所以我也不得不使用NgZone .

1 回答

  • 1

    我猜这是关于使用 Observable 你只能在发出事件时得到一个值,但是你经常想要最后一个(当前)值以及后来关于更新 .

    您可以使用 BehaviorSubject 立即再次向新订阅者发出最后一次发射的值,或者如果您不熟悉Rx,则可能会使用问题中提到的模式 . 这允许你

    this.prop = this.service.num; this.service.observable.subscribe(val => this.prop = val);

    立即获取最后一个值,并使用observable进行更新 .

相关问题