订阅ngrx中的存储时,如何访问以前的状态和当前状态并进行比较?

时间:2020-01-10 15:38:11

标签: angular ngrx

在我的组件中,我订阅了ngrx存储,该存储在给定状态更改时触发。我想设置一个条件,如果当前状态和先前状态不同,那么我将执行一些操作。

如何获取以前的状态?

    this.store
      .select('testPortfolio')
      .subscribe(testPortfolio => {
        // if(testPortfolio.oldValue !== testPortfolio.currentValueValue) ??? ///something like this
        console.log(testPortfolio);
       });

1 个答案:

答案 0 :(得分:2)

您可以使用distinctuntilchanged。在您的情况下,它将类似于:

this.store
  .pipe(
    select('testPortfolio'),
    distinctUntilChanged((prev, curr) => prev.value === curr.value)
  )
  .subscribe(testPortfolio => {
    console.log(testPortfolio); // called only when testPortfolio value has been changed
  });