gpt4 book ai didi

Angular2 - 命名路由器导出不导航到具有子路由的组件

转载 作者:太空狗 更新时间:2023-10-29 17:52:18 25 4
gpt4 key购买 nike

我有一个带按钮的父组件,它的功能是显示里面的子组件。我正在使用命名路由器 socket 导航到 child 。我的尝试基于以下示例:https://github.com/vsavkin/router_mailapp (显示“撰写”的弹出窗口)

路由

...
{
path: 'commissions-module/agents/:agentId/extra-commissions',
component: ExtraCommissionsComponent,
children: [{
path: 'regeneration-parameters',
component: RegenerationParametersComponent,
outlet: 'parameters'
}]
}
...

如您所见,父组件的路径包含可变段(agentId),因此我不能使用绝对路径路由。父子组件都导入到模块文件中。

HTML 模板:

<button (click)="displaySubcomponent()">Show</button>
<router-outlet name="parameters"></router-outlet>

展示方法

displaySubcomponent() {
this.router.navigate(['/', {outlets: {parameters: ['regeneration-parameters']}}])
}

按下按钮后,页面响应

EXCEPTION: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'regeneration-parameters'

当程序尝试导航到新的 url 时,它被创建为:

.../commissions-module/agents/1000555/extra-commissions(parameters:regeneration-parameters)

我需要的是获取以下 url,因为 regeneration-parametersextra-commissions 的子项:

.../commissions-module/agents/1000555/extra-commissions/(parameters:regeneration-parameters)

有趣的是,当我将第二个 url 插入地址栏时,效果很好,子组件显示在其父组件内 - 问题是 router.navigate() 函数创建的 url 中的括号前缺少斜杠(“/”) .

示例中的相同内容效果很好,我发现的针对类似问题的其他解决方案也是如此,是否有隐藏的东西我看不到?谢谢

最佳答案

解决方案非常隐蔽,因为当使用单个路由器 socket 时,通常使用默认的而不是命名的。关键是,即使我们想在应用程序中使用单个命名 socket ,也需要有一个默认(未命名) socket 。该模板看起来像:

<button [routerLink]="['./', {outlets: {parameters: 'regeneration-parameters'}}]">
Show
</button>

<router-outlet></router-outlet>
<router-outlet name="parameters"></router-outlet>

关于Angular2 - 命名路由器导出不导航到具有子路由的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com