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
相关产品推荐
相关产品推荐

