我正试图通过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/