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