默认路由参数Angular2:嵌套路由

Default route parameter Angular2: Nested routing

我正在尝试在 Angular2 中创建嵌套路由。

这是我的组件的代码: app.partial.html

<nav class="navbar navbar-default">
<div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#">Brand</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav">
            <li><a [routerLink]="['Git']">Git Cmp</a></li>
            <li><a [routerLink]="['Courses']">Courses Cmp</a></li>
            <li><a [routerLink]="['Archives']">Archives Cmp</a></li>
        </ul>
    </div>
</div>

这是我的主视图,其中我已将 [routerLink]=['Archieves'] link 包含到具有自己的路由的子组件中。

app.component.ts

@RouteConfig([
    { path: '/git', name: 'Git', component: GitComponent },
    { path: '/courses', name: 'Courses', component: CoursesComponent, useAsDefault: true },
    { path: '/archives/...', name: 'Archives', component: ArchivesComponent },
    { path: '/*other', name: 'Other', redirectTo: ['Git'] }
])

这是父组件路由配置,其中包括 /archives/... 需要子路由的路由。

archives.component.ts

 @RouteConfig([
    { path: '/:id', name: 'Archive', component: ArchiveComponent, useAsDefault: true }
])

并且可以看到上面子组件的路由配置。如您所见,它有 id 参数,因此当我们重定向到此路由时,它需要一些值。

问题

问题是:有没有办法为路由参数设置默认值。因为我的 link 导致错误,其中不包含所需的路由参数。

异常:'id' 的路由生成器未包含在传递的参数中。在 [['Archives'] 在 AppComponent@18:23]

感谢您的帮助!

[routerLink]="['Archives']"

应该是

[routerLink]="['Archives/Archive', {id: 'someId'}]"

[routerLink]="['Archives', {id: 'someId'}]"

也可以。我不确定


更新

您可以在您的 ArchiveComponent 中获取 routeParams(因为这是路由器路由到的位置),如下所示,但在 ArchivesComponent

中则不行
export class ArchiveComponent {
      date: string;
      constructor(private routeParams: RouteParams) {

        console.log(this.routeParams.get('id'));
      }
  }