【问题标题】:Angular2 - Passing params to named outletAngular2 - 将参数传递给命名出口
【发布时间】:2017-08-30 08:45:51
【问题描述】:

我需要将参数从默认插座传递给命名插座。通过后,我得到的只是'未定义'。这是我的代码。

[routerLink]="['', { outlets: { secondOutlet: 'messages' }, name: this.userName, lastName: this.userLastName}]"

我收到这个参数。

    this.route$ = this.route.params.subscribe((params: Params) => {
     this.name= params['name'];
     this.lastName= params['lastName'];
   });

我没有收到任何错误,但在控制台中,我得到的只是未定义的。 如果它在同一个出口上,我可以将参数发送到一条路线,但我无法通过将参数从一个出口发送到另一个出口来弄清楚如何做到这一点。

【问题讨论】:

  • 我可以看到您已标记答案,但没有明确说明您的代码最初有什么问题?
  • @PraveenRawat 错误是发送参数和设置路线的方式

标签: angular parameters routing


【解决方案1】:
  [routerLink]="['', { outlets: { secondOutlet: ['messages', this.userName ] } }]"

在路线规范中

Routes = [
{
    path: 'messages/:username',
    component: AccountsEditComponent,
    outlet: 'secondOutlet'
  }
]

【讨论】:

  • 好的,这样做了,我可以在 URL 中看到参数。但是收到它们时我仍然不确定。使用名称:字符串;私有路由$:订阅; this.route$ = this.route.params.subscribe(params => { this.userName= params['userName']; });
  • 是的,但是当接收到参数时,它们显示“未定义”。
  • 这是我的第一篇文章。我一直在使用它并且它可以工作,但是现在有些东西不起作用..
  • @BrS,您可以像这样将 FirstChild 添加到您的路线中 this.route$ = this.route.firstChild.params.subscribe(params => { this.userName= params['userName']; });
【解决方案2】:

你好,你可以看看这篇文章

passing params routed outlet

希望对你有帮助

【讨论】:

  • 感谢您的努力,但下次最好把它放在评论中
【解决方案3】:

它是这样工作的。 像这样发送参数:

[routerLink]="['', { outlets: { secondOutlet: ['messages', this.username] } }]"

然后在路由中像这样设置你的组件。

Routes = [
{
    path: 'messages/:username',
    component: AccountsEditComponent,
    outlet: 'secondOutlet'
  }
]

【讨论】:

  • 介意解释一下这个答案与接受的答案有何不同吗?
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 2011-10-23
  • 2017-08-12
  • 1970-01-01
  • 2012-10-22
  • 2019-12-19
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多