RxJs - 订阅数组中的特定项

时间:2017-12-22 10:35:34

标签: angular typescript rxjs reactive

我正在构建一个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注入了一个服务,调用API来获取项目。

想法是有一个需要从API更新的订阅项列表,因此需要绑定到Items的每个组件都可以将它们的项添加到subscribedItems数组中,并且商店将从API获取新项不断。物品实际上是传感器数据,因此它们的价值会随着时间而变化,但它们的名称保持不变

是否有智能解决方案让我的TemplateComponent仅订阅item1和item2中的更改而不关心其余项目,或者我是否需要订阅subscribedItems数组然后过滤我的方式来获取item1和item2的新值?

1 个答案:

答案 0 :(得分:0)

要解决您的问题,您应该使用WebSocket技术。这里描述了如何执行此操作的一个很好的示例Angular WS