Reputation: 7294
I am implementing lazy loading in Angular 8, but got stuck in middle. For login and logout I have used same module like below.
const myroutes : Routes = [
{path : 'login',loadChildren:()=>import('./login/login.module').then(m=>m.LoginModule)},
{path : 'logout',loadChildren:()=>import('./login/login.module').then(m=>m.LoginModule)},
{path : 'contact',loadChildren:()=>import('./contact/contact.module').then(m=>m.ContactModule)},
{path : 'home',loadChildren : ()=> import('./home/home.module').then(m=>m.HomeModule)},
]
and in login.module.ts used like
const myroutes : Routes = [
{path : '',component : LoginComponent},
{path : 'logout',component : LogoutComponent}
]
Template which has all links is like below
<nav class="navbar navbar-expand-sm bg-light">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" routerLink="home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="contact">Contact</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="login">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="logout">logout</a>
</li>
</ul>
</nav>
<router-outlet></router-outlet>
But whenever I am clicking on logout link is not going in LogoutComponent.ts is always calling login Component.
What might be going on?
Upvotes: 2
Views: 991
Reputation: 331
The correct path to your logout component is the concatenation of login and logout so:
/login/logout
So your routerLink becomes like this:
routerLink="login/logout"
Upvotes: 3
Reputation: 1645
Your logout component should be /login/logout instead of /logout, which load the login module, and no need to load login module twice since logout is a child of login route
logout route removed from the main route
const myroutes : Routes = [
{path : 'login',loadChildren:()=>import('./login/login.module').then(m=>m.LoginModule)},
{path : 'contact',loadChildren:()=>import('./contact/contact.module').then(m=>m.ContactModule)},
{path : 'home',loadChildren : ()=> import('./home/home.module').then(m=>m.HomeModule)},
]
change router link to routerLink="login/logout"
-
<nav class="navbar navbar-expand-sm bg-light">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" routerLink="home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="contact">Contact</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="login">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="login/logout">logout</a>
</li>
</ul>
I add a stackblitz URL for your reference
https://stackblitz.com/edit/angular-ea742m
Upvotes: 2