具有数组/对象问题的Angular2可观察存储服务 - 组件到组件通信

时间:2017-01-12 00:41:46

标签: angular rxjs angular2-observables

第一个问题对我来说很容易!

我希望在Angular2中构建一个共享服务,它提供了一个可以被应用程序中的组件订阅的可观察属性。

此外,我希望对此进行设置,以便从组件提供数据,而不是通过HTTP get调用。我找到了一些设置示例,它使用DB作为CRUD操作的数据源,但不是在组件中创建的数组或对象的位置。

一个简单的例子如下:

  1. 服务在加载时创建可观察的属性
  2. Comp1在服务时更新属性。
  3. Comp2(订阅服务上的observable属性)接收更新 从服务。
  4. Comp2继续进行更改,因为Comp1继续进行更改 可观察的财产
  5. 有没有人知道一个好的解释或有这个用例的例子?

    谢谢!

1 个答案:

答案 0 :(得分:0)

这是非常常见的用例,您可以按照以下步骤进行操作。

1)在服务构造函数中初始化observable

this.myObservable = new Subject();

根据您想要实现的目标,您可以使用不同的可观察量。 Subject既是Observable又是Observer,它会在订阅时返回它的最新价值。

2)在源组件中推送新值

myService.myObservable.next({...});

您也可以通过服务类中的setter来完成,这样您就可以在将数据推送到流之前修改数据。

3)在您的消费者类中订阅流

myService.myObservable.subscribe(value => ...);

您可以根据需要在尽可能多的组件中订阅它。订阅时,您将立即获得最新值,然后在更新时获得新值。

如果您想拥有初始值,则在初始化服务中的Observable时,您可以使用BehaviorSubject代替Subject