我正试图通过activeroute传递一个对象数组。当我把它传递到下一页时,我得到了[object object]。我在stackoverflow上看到一个问题,他们在哪里使用json.stringify,但这对我不起作用。或者使用应用程序提供程序而不是queryparam更好。
发送数据页的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]);
 });

如果我再做一次json,返回=[object Object]。stringify显示为string"[object Object]"。如果我做了params.criteriaList[0].name返回undefined

最佳答案

你可以简单地通过,

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

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

关于json - 用activeroute传递对象数组的最佳方法-Angular,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52637515/

10-12 07:32
查看更多