【发布时间】:2018-01-04 22:26:14
【问题描述】:
使用 Angular 2,我可以通过定义一个空的 path 并创建一个基本上为空的基础组件来使子路由“覆盖”其父级。我正在尝试使用新的 Angular 路由器(4.3.1 版)完成类似的任务,但遇到了障碍。
为了重现我的问题,here's a Plunker. 路由定义为:
[{
path: '',
redirectTo: "/master",
pathMatch: "full"
}, {
path: 'master',
component: MasterComponent,
children: [{
path: 'detail/:value',
component: DetailComponent,
children: [{
path: 'subdetail',
component: SubDetailComponent
}]
}]
}]
当我导航到详细信息页面时,母版页仍然可见,因为我已将 <router-outlet></router-outlet> 添加到 MasterComponent。我需要的是用细节替换主视图。我可以通过使detail/:value 成为master 的兄弟而不是孩子来实现这一点,但这在我的应用程序中逻辑上不正确,并且会破坏我的面包屑。
是否有任何适当的方法来处理这种模式,或者我必须选择一种解决方法,例如showing and hiding the intended route 或manually specifying a dedicated "main" outlet for every link?
现有的唯一接近的解决方案是define a dummy parent component,但这仅适用于下一级。如果我的详细信息页面有另一个子详细信息页面也应该替换主页面,它会变得非常混乱。
我可以设置任何路由级别的标志或设计模式来实现优雅地完成此任务吗?我是 Angular 2 的初学者,但我觉得这样的事情应该很简单。
【问题讨论】:
标签: javascript angular routing