【问题标题】:Pass json data angular2 routing传递json数据angular2路由
【发布时间】:2017-02-06 21:47:43
【问题描述】:

如何在路由时将 json 对象从一个组件传递到另一个组件。

我想它可以使用服务来实现,但我想知道它是否可以使用路由本身来完成。

定义路由时可以使用的如下数据属性可能会有所帮助,但我需要从组件代码中传递数据,我的意思是不是静态数据

  {
    path: 'heroes',
    component: HeroListComponent,
    data: { title: 'Heroes List' }
  }

谢谢

【问题讨论】:

    标签: angular angular2-routing


    【解决方案1】:

    可以,但您必须使用 JSON.stringify 并将对象转换为路由参数并将它们作为路由的一部分传递。

    【讨论】:

    • 这样做会使它们在 url 中可见。正确的 ?只要参数很少就可以了,但就我而言,我不希望它在 url 中可见
    • 对,它们将在 URL 中可见。该服务是您唯一的其他选择,它具有某种可以在组件之间保存状态的模型。
    【解决方案2】:

    正如其他答案中已经提到的,如果对象没有被字符串化,就不可能通过路由传递对象,这意味着该对象将在 URL 中可见。避免使用服务并且您的对象在 URL 中可见的一种方法是发送至您的 localStorage。在路由之前,您将在localStorage 中设置对象,在路由之后从localStorage 获取对象,所以首先是这样的:

    localStorage.setItem('myObject', JSON.stringify(theObject));
    

    然后我会在服务中创建一个函数,用于在路由后获取项目:

    getMyObject() {
      return JSON.parse.getItem('myObject');
    }
    

    导航后只需调用该函数:

    this.myObject = this.myService.getMyObject();
    

    希望这对您来说是一个可行的解决方案! :)

    【讨论】:

    • 对象仍然可见,但在控制台中还有其他方法吗?
    猜你喜欢
    • 2017-04-23
    • 2017-05-07
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2017-06-19
    • 2016-08-28
    相关资源
    最近更新 更多