Angular сложный объект routerlink как параметр - PullRequest
0 голосов
/ 10 марта 2020

Добрый вечер,

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

ie:

complexObject = {
  x : 'ok',
  y: { 
        a: 2,
       b: 'test'
      },
}

<a [routerLink]="['/example/example-test', complexObject ]">

this.activatedRoute.paramMap.subscribe(complexObject => {
complexObject.get('x') // ok
complexObject.get('y') // The nested object 'y' is a string like [object object]
 }

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Добрый вечер. Одним из способов передачи вложенного объекта в директиве routerLink является использование JSON .stringify ().

ngOnInit() {
 this.obj = JSON.stringify(this.complexObject);
}

Преобразование сложного объекта с помощью JSON .stringify () и передайте объект в директиве RouterLink.

<a [routerLink]="['/categories', { complexObject: obj} ]">CLICK</a>

Здесь мы передадим строковый объект в директиву routerLink.

this.activatedRoute.paramMap.subscribe(params => {
  const complexObject = JSON.parse(params.get('complexObject'));
});

Извлечь объект, переданный в маршрут, используя метод JSON .parse ().

0 голосов
/ 11 марта 2020

Доброе утро,

Вот решение, которое я смог найти:

<a [routerLink]="['/example/example-test', { complexObject: complexObject} ]">

this.route.paramMap.subscribe(params => {
            const complexObject = JSON.parse(params.get('complexObject'))
        })

С уважением

...