这个问题在这里已有答案:
Angular的忠实粉丝,我遵循Angular2关于路由的官方文档(https://angular.io/docs/ts/latest/guide/router.html)来构建我的第一个测试应用程序并陷入以下难以理解的行为 .
我在AppComponent中的模板部分如下所示:
template: `
<h1>Component Router</h1>
<nav>
<a [routerLink]="['/crisis-center']">Crisis Center</a>
<a [routerLink]="['/heroes']">Heroes</a>
</nav>
<router-outlet></router-outlet>
`,
有用 . 我可以通过直接在浏览器中输入网址或点击routerLink指令生成的已定义链接来访问/危机中心或/英雄 .
现在,我不想再显示导航菜单了,但我希望我的应用程序通过直接在浏览器栏中输入网址导航到/ crisis-center或/ heroes,所以我删除了导航块,我的模板现在看起来像:
template: `
<h1>Component Router</h1>
<router-outlet></router-outlet>
`,
但是,此新版本不显示组件特定内容,仅显示父模板部分 .
注意:当只保留一个routerLink指令时,可以导航到组件英雄和危机中心 .
我找到的唯一解决方法是在我的nav标签上应用display:none .
为什么指令 routerLink 必须使路由工作?对我来说,它只是一个生成网址的指令,不会影响路由过程......
1 回答
这是一个已知的问题 . 您也可以将路由器注入根组件
如果没有这些解决方法之一,路由器就不会被实例化,因此不会执行任何操作 .