为什么我的路由器不重定向?
Why isn't my Router redirecting?
我的Angular项目结构如下:
Index.html包含<app-root></app-root>
,也就是我的app.component.
我的应用程序组件具有以下结构:
<md-toolbar>
<ng-template #notLoggedIn>
<a md-icon-button [md-menu-trigger-for]="topnavUserMenu">
<md-icon>person_add</md-icon>
</a>
<md-menu #topnavUserMenu="mdMenu">
<button md-menu-item>
<md-icon>fingerprint</md-icon>
<span><a [routerLink]="['/login']" routerLinkActive="active">Login</a></span></button>
<button md-menu-item>
<md-icon>mode_edit</md-icon>
<span><a [routerLink]="['/signup']">Register</a></span></button>
</md-menu>
</ng-template>
</md-toolbar>
<md-sidenav-container>
<router-outlet></router-outlet>
</md-sidenav-container>
基本上,app.component 在应用程序中持久存在,所有内容都通过 router-outlet
呈现。如果用户从工具栏菜单中选择 "Login",所需的行为是应用程序重定向到 URL,但是,当用户单击 link 时,没有任何反应。
为什么会这样?我该如何解决?
注意:我知道我可以通过向我的 app.component 添加导航功能并将其绑定到按钮的点击来务实地做到这一点,例如:
test() {
this.router.navigate(['/login']);
}
我更感兴趣的是为什么它不能使用 HTML 指令,但它可以完美地使用 JS。
对于新手并且会发现此信息有用的人,@birwin 的声明是正确的 - 锚标记在按钮中是非法的。您需要更改:
<button md-menu-item>
<md-icon>mode_edit</md-icon>
<span><a [routerLink]="['/signup']">Register</a></span>
</button>
至:
<button md-menu-item [routerLink]="['/signup']">
<md-icon>mode_edit</md-icon>
<span>Register</span>
</button>
我的Angular项目结构如下:
Index.html包含<app-root></app-root>
,也就是我的app.component.
我的应用程序组件具有以下结构:
<md-toolbar>
<ng-template #notLoggedIn>
<a md-icon-button [md-menu-trigger-for]="topnavUserMenu">
<md-icon>person_add</md-icon>
</a>
<md-menu #topnavUserMenu="mdMenu">
<button md-menu-item>
<md-icon>fingerprint</md-icon>
<span><a [routerLink]="['/login']" routerLinkActive="active">Login</a></span></button>
<button md-menu-item>
<md-icon>mode_edit</md-icon>
<span><a [routerLink]="['/signup']">Register</a></span></button>
</md-menu>
</ng-template>
</md-toolbar>
<md-sidenav-container>
<router-outlet></router-outlet>
</md-sidenav-container>
基本上,app.component 在应用程序中持久存在,所有内容都通过 router-outlet
呈现。如果用户从工具栏菜单中选择 "Login",所需的行为是应用程序重定向到 URL,但是,当用户单击 link 时,没有任何反应。
为什么会这样?我该如何解决?
注意:我知道我可以通过向我的 app.component 添加导航功能并将其绑定到按钮的点击来务实地做到这一点,例如:
test() {
this.router.navigate(['/login']);
}
我更感兴趣的是为什么它不能使用 HTML 指令,但它可以完美地使用 JS。
对于新手并且会发现此信息有用的人,@birwin 的声明是正确的 - 锚标记在按钮中是非法的。您需要更改:
<button md-menu-item>
<md-icon>mode_edit</md-icon>
<span><a [routerLink]="['/signup']">Register</a></span>
</button>
至:
<button md-menu-item [routerLink]="['/signup']">
<md-icon>mode_edit</md-icon>
<span>Register</span>
</button>