2017-09-25 52 views
0

我有一个使用loginOutlet插座2条不同的路线:航行期间“不能激活已激活的出口”错误另一条路线

密码重置分量

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

回答

0

原来的问题的根本原因是缺少主路由器出口时在没有登录用户:

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

我改变主模板如下:

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

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

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