【问题标题】:ngrx observable data took from a ngrx selector is NOT getting updated outside subscribe if the value in REDUX is getting updated from other component如果 REDUX 中的值正在从其他组件更新,则从 ngrx 选择器获取的 ngrx 可观察数据不会在订阅之外更新
【发布时间】:2022-01-02 11:09:09
【问题描述】:

我的打字稿(简化组件)文件中有以下内容

public param_getting_updated_inHTML: number = 0;
public param_NOT_getting_updated_inHTML: number = 0;

ngOnInit(): void {
      this.store.select(selectorName).subscribe(
      (data) => { 
        this.param_getting_updated_inHTML= data;
      }
    );

    this.param_NOT_getting_updated_inHTML= this.param_getting_updated_inHTML+ 100;
}

我的(简化的)HTML 如下

<div> {{param_getting_updated_inHTML}}  </div> // this is getting updated properly if the value is changed from other place
<div> {{param_NOT_getting_updated_inHTML}}  </div> // (err) This is not getting updated 

【问题讨论】:

  • 你的意思是param_NOT_getting_updated_inHTML在模板中显示为0还是100?
  • 这一行 this.param_NOT_getting_updated_inHTML= this.param_getting_updated_inHTML+ 100; 将只运行一次,因为它不是订阅代码的一部分,从商店 data 获取更新的值

标签: angular observable ngrx selector store


【解决方案1】:

线

this.param_NOT_getting_updated_inHTML = this.param_getting_updated_inHTML+ 100;

在更改param_getting_updated_inHTML var的订阅之外,所以它肯定会在订阅返回值并更新param_getting_updated_inHTML var之前被触发。因此,由于两个 var 的值都初始化为 0,param_NOT_getting_updated_inHTML 只会将 100 加到 0,而模板将在订阅返回时将param_getting_updated_inHTML 显示为除 0 之外的某个值。

换句话说,如果你把

this.param_NOT_getting_updated_inHTML = this.param_getting_updated_inHTML+ 100;

在订阅下 - 当param_getting_updated_inHTML 实际从商店获取其价值时 - 它将按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2016-09-19
    • 2020-02-27
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多