为什么我的路由器不重定向?

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>