【发布时间】:2016-11-16 17:58:40
【问题描述】:
我刚开始学习 Angular2,我想构建一个非常常见的“列表-详细”样式页面,类似于:http://xgrommx.github.io/rx-book/index.html。当您单击左侧栏中的某个项目时,它会启动到中心详细视图的导航,而无需拆下左侧栏。实现这种效果的最佳方法是什么?
当我启动 home 组件时,列表组件(child1)将立即加载,它会调用外部 API 来获取项目列表的名称(仅名称)。单击左侧的项目名称时,它将创建一个新的详细信息组件。 detail 组件在其 ngOnInit 方法中获取项目详细信息。我尝试使用辅助路由将两个子组件嵌套在同一页面上,但它似乎不起作用。我的家乡路线如下所示:
export const HomeRoutes: RouterConfig = [
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
{
path: 'home',
component: HomeComponent,
children: [
{
path: '',
component: ListComponent
},
{
path: ':item',
component: DetailComponent
outlet: 'detail'
}
]
}
];
在我的home.component.ts 中,我只有这个:
<h2>Home</h2>
<router-outlet></router-outlet>
<router-outlet name="detail"></router-outlet>
我导航到详细视图的方式是在列表组件中调用 navigate(),如下所示:
onSelect(item : string) {
this.router.navigate(['/detail', item]);
}
但是每次我单击任何项目时,详细视图都不会显示,并且会显示如下错误:
Error: Uncaught (in promise): Error: Cannot match any routes: 'home/item'
.
我是否在使用辅助路线的正确轨道上,是否有更好的方法来实现此功能?
【问题讨论】:
标签: html angularjs angular angular-routing