【问题标题】:Lazy loading feature module not working延迟加载功能模块不起作用
【发布时间】:2018-11-22 05:54:44
【问题描述】:

我有一个 app.routing.ts 文件如下

    import { ModuleWithProviders, NgModule } from '@angular/core';
    import { Routes, RouterModule } from '@angular/router';
    import { AppComponent } from './app.component';
    import { SalesComponent } from './advisory/sales.component';

    const appRoutes: Routes = [
        {
            path:'admin',loadChildren:'app/auth/admin/admin.module#AdminModule'
        },
        {
            path: '',
            redirectTo: '/main',
            pathMatch: 'full'
        },
        {
            path: 'main', component: SalesComponent,
            data: { apptitle: 'main', subtitle: 'main' }
        },

    ];

@NgModule({
    imports: [RouterModule.forRoot(appRoutes, 
        { useHash: true },
        )],
    exports: [RouterModule]
})

export class AppRoutingModule { }

还有一个功能模块 admin.module.ts 文件如下

 import { NgModule } from '@angular/core';
    import { CommonModule } from '@angular/common';
    import { AdminComponent } from './admin.component';
    import { RouterModule } from '@angular/router';

    @NgModule({
      imports: [
    CommonModule,
    RouterModule.forChild([{
    path: '',
    component: AdminComponent,
    }
    ]),

    declarations: [AdminComponent]
    })

    export class AdminModule { }

如果我在浏览器中点击 localhost:4200/#/main,它可以工作,但如果我输入 localhost:4200/#/admin 或 localhost:4200/admin- 它会刷新并加载相同的主页。知道为什么会发生这种情况并有任何建议吗?

【问题讨论】:

    标签: angular angular-ui-router angular4-router


    【解决方案1】:

    我猜路径不对,你应该改用相对路径,

     path:'admin',loadChildren:'./auth/admin/admin.module#AdminModule'
    

    【讨论】:

      【解决方案2】:

      这是一个 StackBlitz,它在其中工作 https://stackblitz.com/edit/angular-f568ym?file=src%2Fapp%2Fapp.component.html

      您应该使用相对路径。

      path:'admin',loadChildren:'./auth/admin/admin.module#AdminModule'

      您也可能对AdminModule 中定义的路由有疑问

      我会将 AdminModule 中的语法更改为:

      import { NgModule } from '@angular/core';
      import { CommonModule } from '@angular/common';
      import { AdminComponent } from './admin.component';
      import { RouterModule } from '@angular/router';
      
      const adminRoutes: Routes = [
        {
            path:'',
            component:AdminComponent,
            pathMatch: 'full'
        }
      ];
      
      @NgModule({
        imports: [
          CommonModule,
          RouterModule.forChild(adminRoutes)
        ],
        declarations: [AdminComponent]
      })
      
      export class AdminModule { }
      

      【讨论】:

      • 与我在下面发布的答案相同
      • 你没有改变子模块中定义的路径,所以当浏览器添加/时会导致重定向
      • @AnthonyDiTomasso 我尝试添加您的建议。它仍然会加载我在浏览器上尝试过的相同主页。
      • @user3447602 我在它工作的地方添加了一个stackblitz,检查一下。我希望这会有所帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多