I have an angular 6 SPA and I'm trying to navigate to a sibling child when the user clicks on a side menu, but after the click event, it throws an error. I'm just changing the shown component right in the inner outlet
Error: Cannot activate an already activated outlet
Here's my parent module
@NgModule({
schemas: [
imports: [
CommonModule,
HomeRoutingModule,
MatDividerModule,
MatListModule,
MatSidenavModule,
FooterModule,
HeaderModule
],
providers: [],
declarations: [HomeComponent],
exports: [HomeComponent]
})
Parent's routes module:
const routes: Routes = [
{ path: '', component: HomeComponent, canActivateChild: [AuthGuardService], children: [
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
{ path: 'dashboard', loadChildren: './dashboard/dashboard.module#DashboardModule' },
{ path: 'reports', loadChildren: './incident-reports/incident-reports.module#IncidentReportsModule' },
{ path: 'activities', loadChildren: './safety-activities/safety-activities.module#SafetyActivitiesModule' },
{ path: 'metrics', loadChildren: './monthly-metrics/monthly-metrics.module#MonthlyMetricsModule' }
]},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
providers: [AuthGuardService]
})
side nav with router link:
<mat-sidenav-container class="side-container">
<mat-sidenav #sidenav opened="false">
<mat-nav-list>
<a mat-list-item routerLink="./dashboard" routerLinkActive="active-link"><i class="material-icons">dashboard</i> Dashboard</a>
<mat-divider></mat-divider>
<a mat-list-item routerLink="./reports" routerLinkActive="active-link">Generate Incident Report</a>
<mat-divider></mat-divider>
<a mat-list-item routerLink="./activities" routerLinkActive="active-link">Safety Activities</a>
<mat-divider></mat-divider>
<a mat-list-item routerLink="./metrics" routerLinkActive="active-link">Monthly Metrics</a>
<mat-divider></mat-divider>
<a mat-list-item routerLink="./profile" routerLinkActive="active-link">Profile</a>
</mat-nav-list>
</mat-sidenav>
<mat-sidenav-content>
<router-outlet name="innerContainer"></router-outlet>
</mat-sidenav-content>
</mat-sidenav-container>
And child's route module
const routes: Routes = [
{ path: '', component: IncidentReportsComponent, pathMatch: 'full', outlet: 'innerContainer' }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})