【发布时间】:2019-12-18 22:57:47
【问题描述】:
我正在使用 ngrx 效果从 API 获取数据。我尝试了不同的 rxjs 运算符组合来实现这一点。目前使用 groupBy 运算符来实现以下目标
API 数据:
projects = [{id: 1, name: project1, department: dept1, instance_count: 3},
{id: 2, name: project2, department: dept2, instance_count: 6},
{id: 3, name: project3, department: dept1, instance_count: 1},
{id: 1, name: project1, department: dept1, instance_count: 8}]
我可以选择根据部门进行过滤。所以选择'dept1'时的输出应该是
结果:
filteredProjects = [{id: 1, name: project1, department: dept1, instance_count: 11 }, {id: 3, name: project3, department: dept1, instance_count: 1}]
我尝试使用 groupBy 根据 'id' 或 'department' 对数据进行分组,然后应用过滤器并添加分组数据的计数。
this.projects$: Observable<Project[]> = this._store.select(state => state.projects.allProjects)
.map((projects: Project[]) => projects);
this.projects$.pipe(
groupBy(
project => project.id)
).subscribe(console.log);
我无法让 groupBy 和 mergeMap 正常工作。我看到的大多数示例都没有使用管道运算符。这是抛出错误“Project []”类型上不存在“属性”ID。
【问题讨论】:
-
预期的输出是什么样的?喜欢你的“结果:”?
-
这里有一些更好的使用管道的例子:learnrxjs.io/operators/transformation/groupby.html。看起来你的语法不太正确。
标签: angular rxjs ngrx rxjs6 ngrx-effects