当我尝试使用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
在任何嵌套组件中进行工作,我需要更改什么?
完整的示例在Plunker上可用
我的示例在这里工作,但是我不得不添加大量代码。问题在于ALinkComponent
它没有RouteConfig
自己的,因此它需要访问MyApp
的路由器并调用其navigate
方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句