【发布时间】:2018-06-05 00:30:42
【问题描述】:
我正在构建一个 Angular 应用程序,但在理解 RxJ 以及如何使用它来解决我的问题时遇到了一些问题。
假设我有一个组件需要 2 个 Item 类型的对象
export class TemplateComponent {
private item1: Item;
private item2: Item;
constructor(private store: ItemStore) {
}
}
还有Item类
export class Item {
name: string;
value: string;
}
如您所见,我还有一个用于项目的数据存储
export class ItemStore {
public subscribedItems: Item[];
constructor(private httpService: ItemHttpService) {
}
public getSubscribedItems() {
this.httpService.getItems(this.subscribedItems)
.subscribe(response => {
this.subscriberItems = response;
}
}
}
ItemStore 中注入了一个 Service,它调用 API 来获取项目。
这个想法是有一个需要从 API 更新的订阅项目列表,因此每个需要绑定到项目的组件都可以将他们的项目添加到 subscribedItems 数组中,商店将从 API 获取新的项目不断地。这些项目实际上是传感器数据,因此它们的值会随着时间而变化,但它们的名称保持不变
是否有一个聪明的解决方案让我的 TemplateComponent 只订阅 item1 和 item2 的更改而不关心其余的项目,或者我是否需要订阅 subscribedItems 数组,然后通过它过滤我的方式以获得item1 和 item2 的新值?
【问题讨论】:
-
所以基本上,让我看看我是否理解它,您将有一个将定期接收更新的项目列表,并且您希望从特定组件获取更新,比如说项目 2 和 4数组的?其余的物品会发生什么?即使其他组件没有“请求”它们,它们是否也会得到更新?或者您想让它们仅在组件请求它们时接收更新?
-
只有当前在“open”组件中使用的项目才应该被请求,当组件被销毁时,这些项目的订阅应该完成,如果它们也没有被另一个打开组件。
标签: angular typescript rxjs reactive