I have my app-routing.module.ts
as follow:
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; const routes: Routes = [ { path : 'reset', loadChildren: 'app/auth/reset-password-form/reset-password-form.module#ResetPasswordFormModule' }, { path : 'verify', loadChildren: 'app/auth/verify-user-form/verify-user-form.module#VerifyUserFormModule' }, { path : '404', loadChildren: 'app/route-not-found/route-not-found.module#RouteNotFoundModule' }, { path : '', pathMatch : 'full', loadChildren: 'app/landing-page/landing-page.module#LandingPageModule' }, { path : '**', redirectTo: '/404' }, ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
When I navigate to the localhost:4200
, it will load the landing-page.module
properly, however, when I entered localhost:4200/reset
or localhost:4200/verify
or localhost:4200/404
, it will not load the relevant module, instead, it loaded landing-page.module
automatically.
How can I solve this problem?
You have to add Routes to your childmodule
const routes: Routes = [
{ path: '', component: ResetComponent}
];
const ROUTES: ModuleWithProviders =
RouterModule.forChild(routes);
and import ROUTES in child module(ResetModule)
@NgModule({
imports: [
CommonModule,
ROUTES,
],
declarations: [ResetComponent],
exports: [ResetComponent]
})
This problem might happen because of the imports you have added in imports:[ ] of AppModule (or any other module file).
Make sure to remove all the lazily loaded modules from the imports array.
for eg: I have three modules named:HomeModule, ProfileModule and SettingsModule. if HomeModule is eagarly loaded and ProfileModule and SettingsModule are lazily loaded, then imports:[] of AppModule(app.module.ts) should look like this:
imports:[HomeModule] and it shouldn't include ProfileModule or SettingsModule because they will be loaded automatically during runtime.