I'm trying to create a breadcrumb component using this tutorial by Brian Love
It requires you to set a breadcrumb
key-value pair in your routes data
:
const routes: Routes = [{
path: "",
component: RootComponent,
children: [{
path: "signin",
component: SigninComponent,
data: {
breadcrumb: "Sign In"
}
},
{
path: "signup",
component: SignupComponent,
data: {
breadcrumb: "Sign Up"
}
},
{
path: "",
component: IndexComponent
}
]
}, ];
For my app module, it works as expected.
However, I have a main module which is lazy-loaded after the user logs in from app. This is where I want my breadcrumbs.
For some reason, I'm unable to access the data
from my lazy-loaded module, thus satisfying this condition in breadcrumb.component.ts
and breaking the behavior.
if (!child.snapshot.data.hasOwnProperty(ROUTE_DATA_BREADCRUMB)) {
continue;
}
Any ideas why I can't get the data here?
My app-routing module:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TmLoginComponent } from './login/tm-login.component';
import { MainComponent } from './main/main.component';
import { AuthenticationGuard } from './login/authentication-guard';
import { PageNotFoundComponent } from './404/page-not-found.component';
const routes: Routes = [{
path: '',
loadChildren: 'app/main/main.module#MainModule',
canActivate: [AuthenticationGuard],
}, {
path: 'login',
component: TmLoginComponent,
}, {
path: 'home',
redirectTo: '/',
pathMatch: 'full',
}, {
path: '**',
component: PageNotFoundComponent
}];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}
My main routing module (lazy):
import { NgModule } from '@angular/core';
import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { MainComponent } from './main.component';
import { IndiaComponent } from './india/india.component';
import { MaharashtraComponent } from './india/maharashtra/maharashtra.component';
import { KarnatakaComponent } from './india/karnataka/karnataka.component';
import { PuneComponent } from './india/maharashtra/pune/pune.component';
import { MumbaiComponent } from './india/maharashtra/mumbai/mumbai.component';
const routes: Routes = [{
path: '',
component: MainComponent,
data: {
breadcrumb: 'Main'
},
children: [{
path: 'india',
component: IndiaComponent,
data: {
breadcrumb: 'India'
},
children: [{
path: 'maharashtra',
component: MaharashtraComponent,
data: {
breadcrumb: 'Maharashtra'
},
children: [{
path: 'pune',
component: PuneComponent,
data: {
breadcrumb: 'Pune'
},
},
{
path: 'mumbai',
component: MumbaiComponent,
data: {
breadcrumb: 'Mumbai'
}
},
]
},
{
path: 'karnataka',
component: KarnatakaComponent,
data: {
breadcrumb: 'Karnataka'
}
},
],
},
]
}, ];
export const mainRouting: ModuleWithProviders = RouterModule.forChild(routes);