第一个问题对我来说很容易!
我希望在Angular2中构建一个共享服务,它提供了一个可以被应用程序中的组件订阅的可观察属性 .
此外,我希望设置它,以便从组件提供数据,而不是通过HTTP get调用 . 我找到了设置的示例,其中它使用DB作为CRUD操作的数据源,但不是在组件中创建的数组或对象的位置 .
一个简单的例子如下:
-
Service在加载时创建可观察属性
-
Comp1更新服务上的属性 .
-
Comp2(订阅服务上的observable属性)从服务接收更新 .
-
Comp2继续获得更改,因为Comp1继续对可观察属性进行更改
有没有人知道一个很好的解释或有这个用例的例子?
谢谢!
1 回答
这是非常常见的用例,您可以按照以下方式执行此操作 .
1)在服务构造函数中初始化observable
根据您想要实现的目标,您可以使用不同的可观察量 .
Subject
既是Observable又是Observer,它会在订阅时返回它的最新值 .2)在源组件中推送新值
您也可以通过服务类中的setter来完成它,这样您就可以在将数据推送到流之前修改数据 .
3)在您的消费者类中订阅流
您可以根据需要在尽可能多的组件中订阅它 . 订阅时,您将立即获得最新值,然后在更新时获得新值 .
如果要获得初始值,在服务中初始化Observable时,可以使用
BehaviorSubject
而不是Subject
.