лучший способ передать массив объекта с помощью activeroute - Angular - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь передать массив объектов через activveroute.Когда я передаю его на следующую страницу, я получаю [объект объекта].Я видел вопрос о Stackoverflow, где они используют JSON.stringify, но у меня это не сработало.Или лучше использовать поставщиков приложений вместо параметров запроса.

TS страницы, отправляющей данные

criteriaList: ShipmentLookupCriteria[] = [];

    navigateTo() {
        const navigationExtras: NavigationExtras = {
          queryParams: {
            criteriaList: this.criteriaList
          }
        };

        this.router.navigate(['/lookup/results'], navigationExtras);
    }

TSстраница получения данных

 this.sub = this.route.queryParams.subscribe(params => {
      console.log(params.criteriaList);
 });

Модель ShipmentLookUpCriteria

import { EquipReferenceTuple } from './equip-reference-tuple.model';
export class ShipmentLookupCriteria {
  terminal: string;
  equipReferenceList: EquipReferenceTuple[];
  constructor(terminal: string, equipReferenceList: EquipReferenceTuple[]) {
    this.terminal = terminal;
    this.equipReferenceList = equipReferenceList;
  }
}

ОБНОВЛЕНИЕ Я решил начать с чего-то простого.Поэтому я создаю массив объектов с фиктивными данными.

navigateTo() {
    const navigationExtras: NavigationExtras = {
      queryParams: {
        criteriaList: [{ name: 1, age: 1 }, { name: 2, age: 2 }]
      }
    };

    this.router.navigate(['lookup/results'], navigationExtras);
  }

СТРАНИЦА, ПОЛУЧАЮЩАЯ ПАРАМЕТРЫ

 this.route.queryParams.subscribe(params => {
      console.log(params.criteriaList[0]);
 });

RETURNS = [object Object] Если я сделаю снова JSON.stringify показывает это как строку "[object Object]".если я params.criteriaList[0].name возвращает undefined

1 Ответ

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

Вы можете просто пройти,

this.router.navigate(['/lookup/results'], {queryParams: {criteriaList: this.criteriaList }});

и получить к нему доступ, используя

this.sub = this.route.snapshot.queryParamMap.get('criteriaList');
...