如何使用 "complete Url"(带参数的 url)在 Angular 中导航

How to use a "complete Url" (url with params) for navigation in Angular

我的搜索页面有很多过滤选项,这些选项都作为搜索页面上的参数传递给 url(因此可以共享搜索)。当转到搜索结果中一行的详细信息页面时,我正在将搜索结果的完整 Url 作为参数解析到详细信息页面 (detail/1?returnUrl= %2Fsearch%2Fresults%3Fsw%3D%26n%3D%26ee%3D2%26a....),以便返回(在详细信息页面上有一些选项卡可以使用 router[=36= 导航到) ], 所以我无法使用任何历史记录返回搜索结果)。

问题是,我的详细信息页面上有一个完整的 URL(例如 /search/result?a=1&b=people&c=8&d=all&p1=1),我该如何导航到该页面url?

如果我把它放在路由器中link="/search/result?a=1&b=people&c=8&d=all&p1=1" 它不工作。

提前致谢:)

更新

我尝试了以下方法,但没有用:

 public goBack() {
    const returnUrl = this.activatedRoute.snapshot.queryParamMap.get('returnUrl');

    const array1 = returnUrl.split('?');
    const array = array1[1].split('&');

    let parameters = '';

    array.forEach(param => {
        const param1 = param.split('=');
        parameters += `${param1[0]}:'${param1[1]}',`;
    });

    this.router.navigate([array1[0]], { queryParams: {parameters} });

}

它在URL中写入如下link:

http://localhost:4200/search/results?parameters=sw:%27%27,n:%27%27,ee:%272%27,a:%27true%27,l:%27%27,c:%27%27,ad:%27%27,cr:%27%27,pn:%271%27,s:%271%27,sd:%271%27,

编辑:对您更新后的问题的回答

Angulars 路由器中的方法 navigate 接受 Params 作为 属性 queryParams 的参数——不是字符串。

public goBack() {
    const returnUrl = this.activatedRoute.snapshot.queryParamMap.get('returnUrl');

    const array1 = returnUrl.split('?');
    const array = array1[1].split('&');

    let parameters = {};

    array.forEach(param => {
        const param1 = param.split('=');
        parameters[param1[0]] = param1[1];
    });

    this.router.navigate([array1[0]], { queryParams: parameters });

}

以下:对问题的回答与之前制定的一样

查询参数应该自己传递属性。

查看 https://angular.io/api/router/RouterLink#description

中的示例
<a [routerLink]="['/search/result']" [queryParams]="{ 'a': 1, 'b': 'people', 'c': 8, 'd': 'all', 'p1': 1}">
  Products
</a>