在Angular中,我可以为两个不同的路径使用相同的模块吗?

在Angular中,我可以为两个不同的路径使用相同的模块吗?,angular,angular-routing,Angular,Angular Routing,我在Angular 8中实现了延迟加载,但在中间被卡住了。对于登录和注销,我使用了如下相同的模块 const myroutes : Routes = [ {path : 'login',loadChildren:()=>import('./login/login.module').then(m=>m.LoginModule)}, {path : 'logout',loadChildren:()=>import

我在Angular 8中实现了延迟加载,但在中间被卡住了。对于登录和注销,我使用了如下相同的模块

    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)},
     ]
在login.module.ts中使用

const myroutes : Routes = [
  {path : '',component : LoginComponent},
  {path : 'logout',component : LogoutComponent}
]
包含所有链接的模板如下所示

<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>

  • 接触
  • 登录
  • 注销
但每当我点击注销链接时,LogoutComponent中的链接就不存在了。ts总是调用login Component


可能发生了什么?

注销组件的正确路径是登录和注销的连接,因此:

/login/logout 
因此,您的routerLink如下所示:

routerLink="login/logout"

您的注销组件应该是/login/logout而不是/logout,后者加载登录模块,并且不需要加载两次登录模块,因为注销是登录路径的子级

注销路由已从主路由中删除

 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)},
     ]

将路由器链接更改为routerLink=“登录/注销”

-



  • 到注销组件的路径是/logout/logout或/login/logout。Not/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>