订阅一个可观察对象并将值放入数组中
Subscribe to an observable and put values into an array
我是 angular 的新人,我需要一些帮助。
我有一个可观察到的用户类型为 User[]
User: [
id: string,
name: string
]
我还有另一个字符串类型的 ID 数组,从 mat-select
中获取 selected 用户的 ID
Ids = this.Form.controls['users'].value
我现在需要的是订阅 users$ observable,并且只获取在 IDs 中有 id 的用户
const selectedUsers = ids.forEach(id =>this.usersSub$.value.filter((user) => user.userId === id))
类似于上面的内容,但这并不是真正正确的做法,因为它 returns 未定义。我想知道我应该如何正确获取我的 selectedUsers 数组。
您使用 combineLatest 合并两个可观察对象并映射所有元素来完成它。
首先,创建一个带有 id 的可观察对象。
selectedIds$ = of([1, 3]);
players$ = of([
{ id: 1, name: 'lebron' },
{ id: 2, name: 'irving' },
{ id: 3, name: 'love' },
]);
接下来,使用 combineLatest
运算符组合两个可观察对象,return 玩家使用地图迭代 combineLast 的响应,使用过滤器并找到与 playerid 匹配的来自 selectedIds 数组的 ID。
const seletedUsers$ = combineLatest([this.selectedIds$,
this.players$])
.pipe(
map(([ids, players]) => {
return players.filter((p) => ids.find((id) => id === p.id));
})
)
.subscribe((v) => {
console.log(v);
});
我是 angular 的新人,我需要一些帮助。 我有一个可观察到的用户类型为 User[]
User: [
id: string,
name: string
]
我还有另一个字符串类型的 ID 数组,从 mat-select
中获取 selected 用户的 ID Ids = this.Form.controls['users'].value
我现在需要的是订阅 users$ observable,并且只获取在 IDs 中有 id 的用户
const selectedUsers = ids.forEach(id =>this.usersSub$.value.filter((user) => user.userId === id))
类似于上面的内容,但这并不是真正正确的做法,因为它 returns 未定义。我想知道我应该如何正确获取我的 selectedUsers 数组。
您使用 combineLatest 合并两个可观察对象并映射所有元素来完成它。
首先,创建一个带有 id 的可观察对象。
selectedIds$ = of([1, 3]);
players$ = of([
{ id: 1, name: 'lebron' },
{ id: 2, name: 'irving' },
{ id: 3, name: 'love' },
]);
接下来,使用 combineLatest
运算符组合两个可观察对象,return 玩家使用地图迭代 combineLast 的响应,使用过滤器并找到与 playerid 匹配的来自 selectedIds 数组的 ID。
const seletedUsers$ = combineLatest([this.selectedIds$,
this.players$])
.pipe(
map(([ids, players]) => {
return players.filter((p) => ids.find((id) => id === p.id));
})
)
.subscribe((v) => {
console.log(v);
});