为了避免重新加载任何组件,我使用Location.go
来更改第一个组件( SearchboxComponent )的URL。
问题是我在第二个组件( ListingComponent )中使用路由参数来反映某些链接,分页等中URL的更改。但是我的订阅未检测到新URL并且参数不会改变。我可以让路由器模块重新解析URL来填充新参数吗?
ListingComponent
this.route.params.subscribe( async (params: IListingUrlParams) => {
console.log('params', params);
});
SearchboxComponent
const url = this.parametersService.searchParamsToUrl(params);
// this.router.navigate([url]); This works but reloads my main component
this.listingsService.getList(params); // Fetch the new data before navigation
Location.go(url); // This works but params are not reloaded
答案 0 :(得分:1)
如果要更新当前的路线参数。
让我们说您的路线为:
path /:id
当前路径:path / 123
在组件中:
import { Location } from '@angular/common';
constructor(private location: Location) { }
updateRoute(){
let url = this.location.path().replace('123', '456');
this.location.go(url);
}
更新后的路径:path / 456