我们说我们有一个包含100个英雄的列表。每个英雄都有一个id和一个名称属性,因此英雄模型将是:
interface Hero {
id: string;
name: string;
}
我想使用带有哈希映射(字典)数据结构的ngrx / store来快速访问单个英雄。因此,英雄店将具有结构Observable<{[heroId: string]: Hero}>
。
然后在我的hero-component
中我想通过id加载英雄,所以它看起来像:
<app-hero [heroId]="25"></app-hero>
并在控制器中:
heroStore.subscribe(updatedStore => {
this.hero = updatedStore[this.heroId];
}
这有效,但对我来说似乎并不理想,因为当只更新一个英雄时,在所有100个组件中,会触发订阅侦听器。
我考虑过将Observable<Hero>
放入商店而不仅仅是Hero
,因此商店看起来像Observable<{[heroId: string]: Observable<Hero>}>
然后像:
heroStore.getValue()[heroId].subscribe(hero => {
this.hero = hero;
});
是可能的。但话说回来,这似乎有点疯狂。建议的方式是什么?或者更具体地说:如何使用ngrx / store 处理哈希映射资源商店?