我的ngrx选择器在我订阅它时返回一个函数

时间:2019-05-28 01:39:07

标签: redux ngrx

我有以下代码

import { RootStoreState, ProductStoreSelectors} from 'src/app/stores';  

this.store$.pipe(select(ProductStoreSelectors.getSelectedProduct())).subscribe((value) => {
    console.log(value)
})

或者我也尝试过

this.store$.select(ProductStoreSelectors.getSelectedProduct).subscribe((value) => {
        console.log(value)
      }),

基本上,我想订阅我的状态并在商店中的selectedProduct更改时触发一个函数。

export const featureAdapter: EntityAdapter<IProduct> = createEntityAdapter<IProduct>({
  selectId: model => model.id,
});

export const selectProductState: MemoizedSelector<object, State> = createFeatureSelector<State>('products');

export const getSelectedProduc = () => createSelector(
  selectProductState,
  (state: State) => state.selectedProduct
);

并且我的商店是选择了一个商品的EntityState

export interface State extends EntityState<IProduct> {
  selectedProduct: IProduct;
}

但是问题是,

控制台日志会向我返回一个函数,即使编译器说它是IProduct

function memoized() {
        if (!lastArguments) {
            lastResult = projectionFn.apply(null, arguments);
            lastArguments = arguments;
            return lastResult;
        }
        if (!isArgumentsChanged(arguments, lastArguments, isArgumentsEqual)) {
            return lastResult;
        }
        lastArguments = arguments;
        var newResult = projectionFn.apply(null, arguments);
        if (isResultEqual(lastResult, newResult)) {
            return lastResult;
        }
        lastResult = newResult;
        return newResult;
    }

0 个答案:

没有答案