为什么我的子路径在 angular2 中不起作用?

Why is my subroute not working in angular2?

为什么这条子路线不起作用?我检查了这个 SO 问题 。我通过将更具体的路线移到第一个来实施给出的解决方案,但这并没有解决问题。

App.component.ts

import {Whatsup} from "./whatsup.component";
    ...
    template:`

    <li id="whatsup" (click)="loadField('whatsup')" ><a [routerLink]="['/whatsup/...']"> Whatsup?</a></li>
    <router-outlet></router-outlet>
    `
    ...

    @Routes([
        {path: '/whatsup/...', component: Whatsup}
    ])

Whatsup.component.ts

    import {Calendar} from "./Calendar.component";

        ...

        template:`
        <li class="list-group-item"><a [routerLink]="['/today']">{{today | date:'EEEEE'}}</a></li>
        <router-outlet></router-outlet>
        `
        ...

@Routes([
    {path:"/today", component: Calendar}
])

Whatsup 加载成功,但是当我在 Whatsup 中单击 link 时,出现此错误:

未处理的承诺拒绝:无法匹配任何路由。当前段:'today'。可用路线:['/whatsup/...', '/our-recommendations', '/leave-review', '/deals-in-town']。 ;区域:angular;任务:Promise.then;值:对象{消息:"Cannot match any routes. Current se…",堆栈:"BaseException@http://localhost:3000…"}

/... 在 RC.x 路由器中不再需要,也无法识别。只需删除它:

{path: '/whatsup', component: Whatsup}

RC.x 路由器有几个问题,目前尚不清楚 Angular 团队将如何进行。如果您开始从 router-deprecated 迁移,最好继续使用已弃用的路由器,直到清楚路由器故事将如何向前发展。

@angular/router

的一些已知问题
  • 确保您将路由器 (constructor(router:Router) {}) 注入您的 AppComponentAppComponents 模板包含 routerLink,否则根本不会调用路由器。

  • @Routes()中的路由进行排序,以便更具体的路由在前,不太具体的路由在最后,否则将找不到第一个之后的路由。