router.navigate с параметрами запроса Angular 5 - PullRequest
0 голосов
/ 25 октября 2018

У меня проблема с маршрутизацией к маршруту с параметрами запроса. У меня есть такая функция:

goToLink(link) {
    this.router.navigate([`${link.split('?')[0]}`, { queryParams: this.sortParams(link)}]);
}

и эта функция

sortParams(link) {
    let queryParams = url.split('?')[1];
    let params = queryParams.split('&');
    let pair = null;
    let data = {};
    params.forEach((d) => {
      pair = d.split('=');
      data[`${pair[0]}`] = pair[1];
    });
    return data;
}

все в порядке, так что происходитУ меня есть функция с именем goToLink(), которая принимает URL-адрес, а URL-адрес, который передается, является строкой с параметрами запроса, например так:

https://website.com/page?id=37&username=jimmy

, приведенное выше простопример - это не то, как он на самом деле выглядит, а его строка ссылки с параметрами запроса, так что теперь я удаляю параметры из строки и сохраняю их в объекте данных в функции sortParams(), поэтому, когда я передаю вышеупомянутую строку вполучить объект, который выглядит следующим образом:

{id: 37, username: 'jimmy'}

, вот что я передаю в раздел queryParams: в router.navigate,

, функция должнавыглядит так, когда объект возвращается

this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);

, поэтому я успешно перенаправляю к нужному маршруту, но параметры запроса выглядят так ..

/page;queryParams=%5Bobject%20Object%5D

AmЯ тут что то не так делаю ??

Любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ

Если я просто изменить функцию на эту

 this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);

Я получу тот же URL /page;queryParams=%5Bobject%20Object%5D

1 Ответ

0 голосов
/ 25 октября 2018

Может быть, вы поставили скобку, которая предположительно предназначена для 1-го параметра, но вы инкапсулировали ее на всей линии маршрута

Ваш код:

// This is the end of your route statement:  '}}]);' which the close bracket is included
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);

Обновление маршрута:

поместите скобку ] только в 1-й параметр, старайтесь не размещать его в последней части оператора маршрута.

// Update end line: '}});'
this.router.navigate([`${link.split('?')[0]}`], { queryParams: {id: 37, username: 'jimmy'}});
...