You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular NGRX中store.select()订阅执行两次的解决疑问

Angular NGRX订阅重复触发问题解决

你遇到的store.select(getproductlist)订阅执行两次的问题,是因为NGRX store初始化时会先推送一次初始状态值(也就是你在Product.state.ts里定义的空list),第二次才是loadProductsSuccess动作返回的真实接口数据。

skip(1)需要添加在select之后的管道操作里,修改组件的Loadproducts方法如下:

Loadproducts(){
  this.store.dispatch(loadProducts());
  this.subscription=this.store.select(getproductlist)
    .pipe(skip(1)) // 在这里添加skip(1)
    .subscribe(item=>{
      console.log("Enter 1")
      this.productlist=item;
      this.dataSource=new MatTableDataSource(this.productlist);
      this.dataSource.paginator=this.paginator;
      this.dataSource.sort=this.sort;
    })
}

另外注意你的App.config.ts里重复写了两次provideStore({'product':ProductReducer}),建议删掉其中一次,避免冗余配置。

内容的提问来源于stack exchange,提问作者Diego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:33:28