首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得ngrx商店的特定对象?

如何获得ngrx商店的特定对象?
EN

Stack Overflow用户
提问于 2020-05-13 00:20:58
回答 2查看 397关注 0票数 1

现在,我的商店是一个对象,里面有一个users数组的对象:

代码语言:javascript
复制
{ "users": [ { "id": 1, "nome": "Renato Maionese", "cidade": "Franca" } ] }

这就是我从我的商店获取数据的方式:

代码语言:javascript
复制
constructor(
  private store: Store<{ count: number; userStates: Usuario }>
) {
  this.users$ = store.pipe(select('userStates'));
}

在我的模板中,我试图创建一个*ngFor:

代码语言:javascript
复制
<tr *ngFor="let usuario of users$.users | async">

但我收到这样的警告:

src/app/pages/usuario/usuario.component.html:32:32中的

错误-错误TS2339:属性'users‘在类型’可观察‘上不存在。

有一种方法可以从我的商店中获得用户对象,比如:

代码语言:javascript
复制
 this.users$ = store.pipe(select('userStates').users);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-16 21:07:51

您需要扩展管道,select('userStates')不返回数据,它返回如何在存储中发生更改后获得userStates的说明。

要映射数据,有map操作符:https://www.learnrxjs.io/learn-rxjs/operators/transformation/map

代码语言:javascript
复制
import {map} from 'rxjs/operators';

this.users$ = store.pipe(
  select('userStates'),
  map(state => state.users), // now this.users$ returns users instead of state.
);

现在您可以在模板中使用它,而无需属性访问。

代码语言:javascript
复制
<tr *ngFor="let user of users$ | async">
票数 1
EN

Stack Overflow用户

发布于 2020-05-13 00:40:42

代码语言:javascript
复制
<tr *ngFor="let usuario of (users$ | async)?.users">

如下所述,您可以使用选择器。另一个选择是

代码语言:javascript
复制
this.users$ = store.pipe(
             select('userStates'),
             map(userstates => userstates.users));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61764249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档