在Location.go

时间:2018-09-07 06:46:58

标签: javascript angular typescript angular6

为了避免重新加载任何组件,我使用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

1 个答案:

答案 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