导航到另一条路线时“无法激活已激活的插座”错误

时间:2017-09-25 18:41:06

标签: angular

我有2条使用loginOutlet outlet的不同路线:

密码重置组件

export const passwordResetFinishRoute: Route = {
    path: 'reset/finish', children: [
        {
            path: '',
            component: PasswordResetFinishComponent,
            data: {
                pageTitle: 'Password'
            },
            outlet: 'loginOutlet', pathMatch: 'full'
        }
    ]

};

登录组件

export const routes: Routes = [
    {path: 'login', children: [
        {path: '', component: LoginComponent, outlet: 'loginOutlet', pathMatch: 'full'}
    ]}
];

密码重置操作完成后,我想使用以下链接显示LoginComponent

<a class="alert-link" [routerLink]="['/login']">sign in</a>.

我收到以下错误:

Error: Cannot activate an already activated outlet

如何在LoginComponent内加载loginOutlet

2 个答案:

答案 0 :(得分:1)

事实证明,当用户未登录时,问题的根本原因是缺少主路由器插座:

<div *nfIf="loggedIn()" class="content-wrapper">
  <router-outlet></router-outlet>
</div>

我更改了主模板如下:

<div [ngClass]="loggedInClass()"">
  <router-outlet></router-outlet>
</div>

,添加loggedInClass(),在用户登录时返回正确的css类。

然后,路由配置开始正常运行。

答案 1 :(得分:0)

从路由器出口中删除结构指令