NGRX商店选择器的正确用法

时间:2018-09-22 14:15:55

标签: angular ngrx ngrx-store

我在应用程序中使用Ngrx来存储状态。 假设我的商店有两个商品itemA和itemB。 我的componentX对itemA的变化做出反应,并触发了一个函数,该函数进一步执行一些更复杂的计算,这需要itemB的当前值

ComponentX {
    pi = 3.15;
    date = new Date();
    constructor(private appStore: Store<AppState>){}
    ngOnInit() {
         this.appstore.select(selectItemA).subscribe(
             (itemA) => someComplexFunction(itemA)
         )
    }
    someComplexFunction(itemA) {
        /* Requires itemB */
    }
}

但是componentX不在乎itemB何时更改,它仅在itemA更改时需要itemB的当前值。我无法从状态中删除itemB,这是其他组件所需的。 在这种情况下编写选择器的正确方法是什么。

1 个答案:

答案 0 :(得分:2)

您可以使用withLatestFrom运算符。

类似withLatestFrom(this.appstore.select(selectItemB))的东西,它将为您提供B

看一下这个示例,其中相同的操作在效果上完成: https://gist.github.com/vteivans/da5adf19a94da9e32d27cb8b9d5b8884

(原理相同)