javascript - 从 Angular-Redux 商店获取最新状态

标签 javascript angular redux angular5 angular-redux

我创建自己的商店

export interface IAppState {
    cartData:ICartItem[];

    lastUpdate:Date;
}

并添加一些reducer来处理ADD和REMOVE操作

但在很多地方我只需要商店的最新数据。根据文档,添加 attr @select() 来存储项目就足够了,添加您将获得当前状态。

但是我创建了一些服务,可以完成所有工作,例如从商店中获取、添加和删除商品

@Injectable()
export class CartService {
    @select() private cartData: ICartItem[] ;
    constructor(private ngRedux: NgRedux<IAppState>) { }

    getItems() {
        return this.cartData;
    }

    addItem(item: IItem) {
        this.ngRedux.dispatch({type: ADD_CART_ITEM, cartItem : item});
    }

    removeItem(itemId: string) {
        this.ngRedux.dispatch({type: REMOVE_CART_ITEM, id: itemId});
    }

    removeAllItems() {
        this.ngRedux.dispatch({type: REMOVE_ALL_CART_ITEMS});
    }
}

但是问题 - 当我在组件初始化时使用 getItems 初始化 myCartData 属性时,稍后我可以添加或删除某些项目,但是 myCartData > 在这一切之后,属性将不会更新。

那么我如何使用此类服务​​从商店获取最新状态?或者这种方法很糟糕,我需要在需要时直接从商店获取状态,而不需要任何自定义服务?

最佳答案

试试这个:

@Injectable()
export class CartService {
    @select('cartData')  cartData$: Observable<ICartItem[]> ;

    constructor(private ngRedux: NgRedux<IAppState>) { }

    addItem(item: IItem) {
        this.ngRedux.dispatch({type: ADD_CART_ITEM, cartItem : item});
    }

    removeItem(itemId: string) {
        this.ngRedux.dispatch({type: REMOVE_CART_ITEM, id: itemId});
    }

    removeAllItems() {
        this.ngRedux.dispatch({type: REMOVE_ALL_CART_ITEMS});
    }
}

在您的组件文件中,只需订阅 cardService.cardData$,或在模板中使用异步管道。

关于javascript - 从 Angular-Redux 商店获取最新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479347/

相关文章:

javascript - jQuery/Javascript : setInterval check if DOM element exists?

javascript - 防止缓存 xmlhttprequest

javascript - 通过循环Javascript计算总高度

reactjs - 当你将 React 组件连接到 Redux Store 时, "export default connect"的必要性是什么

reactjs - prop 类型在 React 应用程序中不起作用

android - BackHandler 无法正常工作 React Native

javascript - jQuery - 结合 slideToggle 和动画时闪烁

javascript - 如何检查浏览器是否支持翻转(即许多移动设备没有光标)

angular - 覆盖我的可观察变量会杀死当前订阅者吗?

view.html 中的 Angular HttpErrorResponse