在我的应用程序中,有一种情况我想从'createcontrol'路由路由到'createform'路由(这是'createcontrol'的兄弟)。这按预期工作,并加载'createform'屏幕。 现在,如果满足某个条件,我想路由到'createcontrol'路线,但这不起作用。仅当'createform'路由从'createcontrol'路由时才会发生这种情况。
是否存在一些问题,您将路由回到最初路由您的兄弟姐妹? 这是我对路线的定义
this._router.navigateByUrl('/projects/learningconsole/(r1:createcontrol)');
另请注意,我在控制台中没有出现任何错误。屏幕保持不变,即使网址没有改变,也不会像我期望的那样指示r1:createcontrol。
以下是我的路由到创建控制屏幕的代码:
{{1}}
我认为问题不在于任何组件,因为我最初能够毫无问题地路由到createcontrol屏幕。
用简单的词汇总结: 考虑有3个兄弟路线A,B,C。 从C到A的路由工作。 从A到B的路由工作。 只有从A到B的路由到A不起作用。
答案 0 :(得分:0)
您的路线的相对性可能存在问题。从本质上讲,路由的第一次尝试可能是从您的出口外部发生的。发送给兄弟姐妹的兄弟是从插座内部发生的,因此您不需要指定父路由'projects/learningconsole'
。试试这个(仅适用于兄弟姐妹):
this._router.navigateByUrl('(r1:createcontrol)');
如果这不起作用,另一个可能的解决方案是指定相对性(你可能需要调整它,因为我没有你的组件的完整图片):
this._router.navigateByUrl('(r1:createcontrol)', { relativeTo: this.routeParams });
这种替代方法需要您注入ActivatedRoute
:
constructor(
private routeParams: ActivatedRoute,
<强>更新强>
可能有第三种解决方案需要较少的路由知识。然而,这显然是不太理想的方法。我无法谈论此解决方案的功效,因为您没有提供有关项目结构的详细信息。尝试将您的路线更新为我在下面的位置:
[{
path: 'projects/learningconsole',
component: LearningConsoleComponent
},
{ path: 'projects/learningconsole/createdocument', component: CreateDocumentComponent, outlet: 'r1' },
{ path: 'projects/learningconsole/createform', component: CreateFormComponent, outlet: 'r1' },
{ path: 'projects/learningconsole/editform', component: EditFormComponent, outlet: 'r1' },
{ path: 'projects/learningconsole/createcontrol', component: CreateControlComponent, outlet: 'r1' }
]