繁体   English   中英

angular2 RouteParams、序列化和复杂对象或数组

[英]angular2 RouteParams, serialization, and complex objects or arrays

我正在尝试将对象作为 RouteParam 传递

let params = { account: 'revenue', page: 3, conditions: [{foo: 'john'}, {foo: 'kelly'}] // <-- Complex object } this._router.navigate(['Journal', params])

但我得到一个像

http://localhost:3000/journal/revenue/3?conditions=[object%20Object],[object%20Object]

IIRC,angular1 支持使用 JQuery 的 $.param 来回这种类型的序列化(我可能错了)

有没有办法在 angular2 中实现类似的目标?

由于此类参数在 URL 内传递,因此您可以使用例如JSON.stringify将它们转换为字符串,并在您想要访问它们时使用JSON.parse将它们从路由参数转换为对象。

let params = { 
  account: 'revenue', 
  page: 3, 
  conditions: JSON.stringify("[{foo: 'john'}, {foo: 'kelly'}]") 
};
this._router.navigate(['Journal', params]);

constructor(params:RouteParams) {
  var conditions = JSON.parse(params.get('conditions'));
}

另一种方法是使用共享服务。 您在调用路由之前将对象设置为该服务的一个属性,并在路由激活后从与该路由对应的组件中获取它。 您会注意到在引导应用程序时需要定义共享服务,以便能够为整个应用程序共享单个实例:

bootstrap(AppComponent, [ SharedService ]);

有关更多详细信息,请参阅此问题:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM