从 angular 中的存储中按 ID 选择元素
Selecting an element by id from store in angular
我在商店中有以下数据:
{
properties :
[
{
_id: 123.
name: "Nice property"
},
{
_id: 456.
name: "Another nice property"
}
]
}
在我的 ngOnInit
方法中,我想 select 来自商店的 属性 计算一个作为 queryParam 传递的 id,如下所示:
javascript
this.id = this.route.snapshot.paramMap.get('id');
this.property = this.ngRedux.select( state => state.properties).pipe(find( property => property._id === this.id))
显然,这行不通,但它抓住了我正在努力做的事情的精神。
谷歌搜索 select 使用 ngRedux 通过 id 搜索几乎没有什么用,所以我怀疑我做错了。
我曾尝试使用 .subscribe
解决此问题,但是,所有逻辑都必须在订阅回调中,这似乎是错误的,并且在我尝试制作反应式表单时不起作用。
试试这个:
this.property = this.store.select((state) => state.properties)
.pipe(map(properties => properties.find(x => x_.id == this.id)));
这应该适用于您给定的场景。您只需 select 商店中的属性,然后 return 第一个 属性 与您的 ID 匹配的属性。
我在商店中有以下数据:
{
properties :
[
{
_id: 123.
name: "Nice property"
},
{
_id: 456.
name: "Another nice property"
}
]
}
在我的 ngOnInit
方法中,我想 select 来自商店的 属性 计算一个作为 queryParam 传递的 id,如下所示:
javascript
this.id = this.route.snapshot.paramMap.get('id');
this.property = this.ngRedux.select( state => state.properties).pipe(find( property => property._id === this.id))
显然,这行不通,但它抓住了我正在努力做的事情的精神。
谷歌搜索 select 使用 ngRedux 通过 id 搜索几乎没有什么用,所以我怀疑我做错了。
我曾尝试使用 .subscribe
解决此问题,但是,所有逻辑都必须在订阅回调中,这似乎是错误的,并且在我尝试制作反应式表单时不起作用。
试试这个:
this.property = this.store.select((state) => state.properties)
.pipe(map(properties => properties.find(x => x_.id == this.id)));
这应该适用于您给定的场景。您只需 select 商店中的属性,然后 return 第一个 属性 与您的 ID 匹配的属性。