路由更改时getter不重新计算,导致数据错误



我想从商店中选择路线中的productId。

所以我的组件中有getter函数:

get productId() {
const x = this.route.snapshot.paramMap.get('productId');
console.log({ x });
return x;
}
product$ = this.store.pipe(select(selectProductById, { productId: this.productId }));

问题是,当我导航到另一个产品时,product$不会更改。因为getter没有重新计算。并且CCD_ 2也不重新计算。

当路线改变时,我能做些什么来获得产品$?

如果我们尝试用不同的路由参数重新加载当前路由,快照将不会更新
在您的情况下,应该使用subscribe而不是snapshot:

this.route.params.subscribe(params => {
const productId = params['productId'];
product$ = this.store.pipe(select(selectProductById, { productId: productId}));
});

更多解释:https://angular.io/guide/router#getting-路线信息

最新更新