繁体   English   中英

如何从角度组件中的ngrx商店获取东西

[英]How to get stuff from ngrx store in an angular component

我在组件中有这段代码:

    ngDoCheck(){
    this.store.select('info').pipe(map((val: Info) => {
        window.alert(val.user.name);
        this.user.name = val.user.name;
    }));
}

首先,我想验证这不会订阅observable,而是像我想的那样异步地检查值。

其次我想知道它为什么不工作,使用调试器我看到val是未定义的但是商店存储了属性,因此属性存储在商店中但是这个代码没有到达它。

我也看到地图中的代码永远不会到达。 谢谢。 任何帮助表示赞赏。 祝你有美好的一天。

您需要订阅才能听取状态更改,并且您不需要强制键入,因为如果您正确键入“InfoState”,ts继承将在订阅中为您提供正确的类型

this.store.select('info').subscribe(info => {
    window.alert(info.user.name);
    this.user.name = info.user.name;
});

标准方法是在完成后订阅存储和取消订阅。

storeSubscription: Subscription;

ngOnInit() {
  this.storeSubscription = this.store.select('info').subscribe(info => {
    window.alert(info.user.name);
    this.user.name = info.user.name;
  });
}

ngOnDestroy() {
  this.storeSubscription.unsubscribe();
}

通过使用Subscription ,我们确保商店订阅了它的特定片段('info'),因此该片段中的任何更改都会通知您的组件。 我们还必须取消订阅以在不使用时释放挂钩以避免不必要的内存使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM