首页 文章

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

提问于
浏览
0

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

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

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

一个简单的例子如下:

  • Service在加载时创建可观察属性

  • Comp1更新服务上的属性 .

  • Comp2(订阅服务上的observable属性)从服务接收更新 .

  • Comp2继续获得更改,因为Comp1继续对可观察属性进行更改

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

谢谢!

1 回答

  • 0

    这是非常常见的用例,您可以按照以下方式执行此操作 .

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

    this.myObservable = new Subject();
    

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

    2)在源组件中推送新值

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

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

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

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

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

    如果要获得初始值,在服务中初始化Observable时,可以使用 BehaviorSubject 而不是 Subject .

相关问题