Как использовать полный URL-адрес (URL-адрес с параметрами) для навигации в Angular

У меня есть страница поиска с множеством параметров фильтрации, все эти параметры передаются URL-адресу в качестве параметров на странице поиска (поэтому можно поделиться поиском). при переходе на страницу сведений для одной строки в результатах поиска я анализирую полный URL-адрес результата поиска на странице сведений в качестве параметра (detail/1?returnUrl=%2Fsearch%2Fresults%3Fsw%3D%26n% 3D%26ee%3D2%26a....), чтобы можно было вернуться назад (на странице сведений есть несколько вкладок, на которые можно перейти с помощью routerlink, поэтому я не могу использовать историю для возврата к результат поиска).

Вопрос в том, у меня есть полный URL-адрес на моей странице сведений (например, /search/result?a=1&b=people&c=8&d=all&p1=1), как мне перейти к этому URL-адресу?

Если я помещу его в routerlink="/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:

http://localhost:4200/search/results?parameters=sw:%27%27,n:%27%27,ee:%272%27,a:%27true%27,l:%27%27,c:%27%27,объявление:%27%27,cr:%27%27,pn:%271%27,s:%271%27,sd:%271%27,


person PNR    schedule 11.01.2020    source источник


Ответы (1)


EDIT: ответ на обновленный вопрос

метод navigate в маршрутизаторе Angulars принимает 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>
person Troels Lenda    schedule 11.01.2020
comment
Большое спасибо за ваш ответ! тогда мне нужно вручную разделить строку с параметрами запроса и построить queryParams, как вы показали выше? Есть ли простой способ сделать это? - person PNR; 11.01.2020
comment
Идеальный! Спасибо большое. Просто для заметки. Последняя строка должна быть такой: this.router.navigate([array1[0]], { queryParams: параметры }); (Без скобки вокруг параметров) - person PNR; 12.01.2020