有 Array/Object 个问题的 Angular2 Observable 存储服务 - 组件到组件的通信

Angular2 Observable Storage Service with Array/Object Questions - Component to Component Communication

第一个问题请放轻松!

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

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

一个简单的例子如下:

  1. 服务在加载时创建可观察对象 属性
  2. Comp1 更新 属性 服务。
  3. Comp2(在服务上订阅了 observable 属性)接收更新 从服务。
  4. 随着 Comp1 继续更改,Comp2 继续更改 可观察 属性

有没有人知道一个很好的解释或有这个用例的例子?

谢谢!

这是很常见的用例,您可以按以下方式进行操作。

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

this.myObservable = new Subject();

根据您想要实现的目标,您可以使用不同的可观察对象。 Subject 既是 Observable 又是 Observer 并且 return 它是订阅的最新值。

2) 在您的源组件中推送新值

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

您也可以通过 setter 在您的服务 class 中执行此操作,这样您就可以在将数据推送到流之前修改数据。

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

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

您可以在任意多个组件中订阅它。当您订阅时,您将立即获得最新值,然后在更新时获得新值。

如果你想有初始值,在服务中初始化Observable时,你可以使用BehaviorSubject而不是Subject