как передать массив в качестве параметра, используя маршрутизацию в угловых 4 - PullRequest
0 голосов
/ 08 июня 2018

Я работаю над угловым проектом. Я хочу передать объект массива в качестве параметра на другую страницу через маршрутизацию моей функции следующим образом

Goto(item)
{

    console.log(item.numtopics);
    this.router.navigate(['/numbersystem'],  { queryParams: item.numtopics});

} 

и получение данных следующим образом

constructor(private route: ActivatedRoute) {
    this.route.queryParams.subscribe( param => {


        console.log(param);
    });

    }

но в консоли я получаю такие данные

{0: "[object Object]", 1: "[object Object]", 2: "[object Object]"}

Я не получаю данные массива должным образом

любая помощь.Спасибо !!

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

См. Официальную документацию о том, как передаются queryParams.

Причина, по которой вы получаете данные типа {0: "[object Object]", 1: "[object Object]", 2: "[object Object]"}, заключается в том, что это объект.

Попробуйте передать JSON.stringify(item.numtopics) к запросу.Это передаст строку в queryParams.Также вы можете упомянуть NAME запроса (см. Doc).Например:

https://www.yourdomain.com/search?NAME=stringifiedString

Перед передачей строкового массива вы можете зашифровать данные, чтобы использовать некоторый алгоритм шифрования.После этого в компоненте, в котором вы получаете параметры, вы можете снова использовать JSON.parse(paramsData), чтобы получить массив обратно из строки.

В случае, если вы использовали шифрование, вы должны сначала расшифровать, а затем использовать JSON.parse()

0 голосов
/ 08 июня 2018

Если вы хотите получить этот переданный массив, вы должны использовать:

console.log(param.numtopics)

или вы также можете передать массив следующим образом:

this.router.navigate(['/numbersystem'],  { queryParams: item.numtopics});

и затем вы можете получить этот массивкак вы пытались:

console.log(param)
...