【发布时间】:2016-05-23 02:06:41
【问题描述】:
当我在试验 Angular2 的路由器(2.0 beta 6)时,我遇到了一个关于从子组件调用 routeLink(或 router.navigate)的问题。
我的主要组件如下所示:
@Component({
selector: 'myapp',
template:`
<div>
<alink></alink>
<router-outlet></router-outlet>
</div>
`,
directives: [ROUTER_DIRECTIVES, ALinkComponent],
providers: [ROUTER_PROVIDERS]
})
@RouteConfig([
{
path: '/first',
name: 'First',
component: FirstComponent,
useAsDefault: true
},
{
path: '/second',
name: 'Second',
component: SecondComponent
}
])
export class MyApp {
}
<alink> 仅显示带有[routerLink] 到Second 的链接:
@Component({
selector: 'alink',
template: `<h3><a [routerLink]="['Second']">Should redirect to second</a></h3>`,
directives: [ROUTER_DIRECTIVES],
providers: [ROUTER_PROVIDERS]
})
export class ALinkComponent {
}
但是,当单击此链接时,什么也没有发生(控制台上甚至没有弹出消息)。 MyApp 模板中的链接可以完美找到。将(click)=... 处理程序与router.navigate(...) 一起使用也不起作用。
为了使routerLink 在任何嵌套组件中工作,我需要进行哪些更改?
一个完整的例子是可用的on Plunker
【问题讨论】: