NgRx 访问 State Store 上的数据
NgRx Accessing Data on State Store
我有用户数据(姓名、电子邮件等)的状态。
在 component.ts 我正在访问状态:
this.user$ = store.pipe(select(fromUser.getUser))
我正在尝试访问位于 component.html 的 {{ user$.name }}
我已经尝试通过使用订阅方法的调用来执行此操作并且有效,但我正在尝试使用 store.pipe(select)
可能打错电话了?还是我做错了?
使用async pipe:
// component.html
<span> Hello {{ (user$ | async).name }}! </span>
您需要通过async
管道订阅,然后获取名称:
{{ (user$ | async)?.name }}
没有看到任何代码很难判断,但看起来您没有订阅它。
因为您在 属性 名称中使用了 $
约定,看起来您知道您正在从 NgRx 存储中获取一个可观察对象。不过,该功能只有在您订阅后才会执行。
有两种订阅方式。您可以在 component.ts 文件中明确订阅(不推荐,因为您必须手动管理订阅)或者您可以在模板中使用 async
管道。 async
管道将为您管理订阅。
component.ts 文件
this.user$ = store.pipe(select(fromUser.getUser))
component.html 文件
<div class="wrapper" *ngIf="user$ | async as user">
<p>{{ user.name }}</p>
</div>
使用 'async' 管道的上述方法允许您使用别名并更轻松地在整个模板中引用 observable 属性。这种使用带有别名的容器元素的方法只会在您的 user$
observable 上建立一个订阅。
需要记住的一点是,每次使用 async
管道时,它都会创建一个新的可观察对象。如果您需要引用的不仅仅是 name
属性,您应该遵循我上面示例中的包含元素模式。这样,您就可以在一个订阅中引用用户对象的所有属性。
我有用户数据(姓名、电子邮件等)的状态。
在 component.ts 我正在访问状态:
this.user$ = store.pipe(select(fromUser.getUser))
我正在尝试访问位于 component.html 的 {{ user$.name }}
我已经尝试通过使用订阅方法的调用来执行此操作并且有效,但我正在尝试使用 store.pipe(select)
可能打错电话了?还是我做错了?
使用async pipe:
// component.html
<span> Hello {{ (user$ | async).name }}! </span>
您需要通过async
管道订阅,然后获取名称:
{{ (user$ | async)?.name }}
没有看到任何代码很难判断,但看起来您没有订阅它。
因为您在 属性 名称中使用了 $
约定,看起来您知道您正在从 NgRx 存储中获取一个可观察对象。不过,该功能只有在您订阅后才会执行。
有两种订阅方式。您可以在 component.ts 文件中明确订阅(不推荐,因为您必须手动管理订阅)或者您可以在模板中使用 async
管道。 async
管道将为您管理订阅。
component.ts 文件
this.user$ = store.pipe(select(fromUser.getUser))
component.html 文件
<div class="wrapper" *ngIf="user$ | async as user">
<p>{{ user.name }}</p>
</div>
使用 'async' 管道的上述方法允许您使用别名并更轻松地在整个模板中引用 observable 属性。这种使用带有别名的容器元素的方法只会在您的 user$
observable 上建立一个订阅。
需要记住的一点是,每次使用 async
管道时,它都会创建一个新的可观察对象。如果您需要引用的不仅仅是 name
属性,您应该遵循我上面示例中的包含元素模式。这样,您就可以在一个订阅中引用用户对象的所有属性。