为什么 routerLink 在 Angular2 中是强制性的?
Why is routerLink mandatory in Angular2?
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>
`,
有效。我可以通过在浏览器中直接输入 url 或单击 routerLink 指令生成的定义链接来访问 /crisis-center 或 /heroes。
现在,我不想再显示导航菜单,但我希望我的应用程序通过直接在浏览器栏中输入 url 来导航到 /crisis-center 或 /heroes,所以我删除了导航块并我的模板现在看起来像:
template: `
<h1>Component Router</h1>
<router-outlet></router-outlet>
`,
但是新版本不显示组件具体内容,只显示父模板部分。
注意:当只保留一个 routerLink 指令时,组件 heroes 和 crisis-center 都可以导航到。
我找到的唯一解决方法是将 display:none 应用到我的导航标签。
为什么必须使用指令 routerLink 才能使路由正常工作?对我来说,它只是一个生成 url 的指令,不会影响路由过程...
这是一个已知问题。您也可以将路由器注入根组件
export class AppComponent {
constructor(router Router){}
}
如果没有这些解决方法之一,路由器不会被实例化,因此什么也不做。
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>
`,
有效。我可以通过在浏览器中直接输入 url 或单击 routerLink 指令生成的定义链接来访问 /crisis-center 或 /heroes。
现在,我不想再显示导航菜单,但我希望我的应用程序通过直接在浏览器栏中输入 url 来导航到 /crisis-center 或 /heroes,所以我删除了导航块并我的模板现在看起来像:
template: `
<h1>Component Router</h1>
<router-outlet></router-outlet>
`,
但是新版本不显示组件具体内容,只显示父模板部分。
注意:当只保留一个 routerLink 指令时,组件 heroes 和 crisis-center 都可以导航到。
我找到的唯一解决方法是将 display:none 应用到我的导航标签。
为什么必须使用指令 routerLink 才能使路由正常工作?对我来说,它只是一个生成 url 的指令,不会影响路由过程...
这是一个已知问题。您也可以将路由器注入根组件
export class AppComponent {
constructor(router Router){}
}
如果没有这些解决方法之一,路由器不会被实例化,因此什么也不做。