【问题标题】:Creating my own observable with rxjs and angular2用 rxjs 和 angular2 创建我自己的 observable
【发布时间】:2017-03-01 20:39:38
【问题描述】:

我在同一页面上有两个组件。第一个显示项目列表,而第二个是显示项目的精炼器。我想在服务中使用Observables,以便在两个组件之间建立“通信”。

所以,在我看来,它会是这样的:

  • 第一个组件订阅 observable,同时检索未过滤的项目列表。
  • 当用户单击第二个组件中的精炼标准时,会调用服务函数以在Observable 上发出某些内容,因此,第一个组件会收到新的项目列表并更新其视图。

看起来很简单,但我无法理解不同的类(SubscriptionSubscriberSubjectObservable)。我最接近的是使用Subject,但我不知道当有新订阅者时如何发送初始项目列表。

【问题讨论】:

    标签: angular rxjs


    【解决方案1】:

    你在正确的轨道上。如果您希望每个订阅者都获得之前发出的值,请使用ReplaySubject。这会将整个列表(或您选择的任何缓冲区长度)重播给每个新订阅者。

    如果您有一个固定的 ReplaySubject 起始值,请使用 BehaviorSubject

    您想在您的服务中使用这两者之一作为私有财产。当您使用新列表调用服务时,请在主题上调用 .next。为您将其转换为 Observable 的主题添加一个公共 getter 方法(使用 .asObservable() 方法)。这用于订阅者获取值。 (您不想公开主题本身以防止其他人更改它。)

    Subject 同时是 Observable 和 Observer,这意味着您不仅可以从中获取值(通过 Observable 接口),还可以自己添加这些值(通过 Observer 接口)。

    【讨论】:

    • 它似乎工作谢谢。现在我只需要找到一种方法来通过测试调用正确初始化项目,我的服务就会完成。感谢您的帮助 ;-)
    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    相关资源
    最近更新 更多