嵌套 router-outlet 于 angular 5.2.0

Nested router-outlet in angular 5.2.0

当涉及到很多孩子时,我在 Angular 中嵌套路由时遇到问题。

这是我的路由配置:

{
    path: '',
    canActivate: [Auth],
    component: LayoutComponent,
    children: [
    {
        path: 'administrator',
        component: AdministratorComponent,
        canActivate: [Role],
        children: [
        {
            path: "users",
            component: UsersComponent,
            children: [
            {path: ':page', component: UsersComponent},
            {
                path: 'preview',
                children: [
                    {path: ':id', component: UsersComponent}
                ]
            },
            {path: 'add', component: UsersEditComponent},
            {
                path: 'edit',
                children: [
                   {path: ':id', component: UsersEditComponent}
                ]
            }
            ]
        },
        {path: "params", component: ParamsComponent}
    ]
}

}

问题显示在路线上 /administrator/users/add /administrator/users/edit/{id} /administrator/users/preview/{id} 因为嵌套 router-outlet

我的app.component.html

<router-outlet (deactivate)="onDeactivate()"></router-outlet>

我的管理员组件

<div class="col s12">
    <div class="row tab-content">
        <router-outlet></router-outlet>
    </div>
</div>

在 AdministratorComponent 中我动态加载了 UsersComponent 或 ParamsComponent,我对这种情况下的 UsersComponent 感兴趣,它看起来像这样:

<div class="users-table">    
<!--some code--!>
    <a [routerLink]="['/administrator', 'users', 'add']" routerLinkActive="active">Add</a>
</div>

现在我要归档的是使这个 <a> 元素在 AdministratorComponent 的 router-outlet 中工作,这可能吗?如果不是,我应该如何重构它?我需要一些新的想法,因为我被卡住了。 我希望我的问题很清楚。

感谢您的帮助。

好的,我找到了这个例子的解决方案:

  1. 从 /administrator/users 路径中删除 component: UsersComponent
  2. {path: '', component: UsersComponent} 作为 child 添加到 /administrator/users
  3. 正确的路线顺序是:

    一个。 ''
    b. 'add'
    C。 'preview'
    d. ':page'

现在嵌套 router-outlet 上的路由按我预期的方式工作。