来自延迟加载模块的Angular 2延迟加载模块

时间:2016-10-13 14:00:19

标签: angular routes lazy-loading ng-modules

我正在开发一个简单的网页,其中包含一个主页模块,其中包含两个组件,主页和登录,我使用Lazy-Loading加载......

这是我的App-Routing Module

const routes: Routes = [
  { path: '', redirectTo: 'home', pathMatch: 'full' },
  { path: 'home', loadChildren: 'app/home/home.module#HomeModule' },
  { path: 'main', loadChildren: 'app/main/main.module#MainModule' }
];

@NgModule({
  imports: [
    HomeRoutingModule,
    RouterModule.forRoot(routes)
  ],
  exports: [RouterModule],
  providers: []
})
export class GESFWRoutingModule { }

这是我的家庭模块......

const routes = [
  { path: 'home', component: HomeComponent },
  { path: 'login', component: LoginComponent }
]

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild(routes),
    ReactiveFormsModule
  ],
  declarations: [
    HomeComponent,
    LoginComponent
  ],
  providers: [
    AuthService
  ]
})
export class HomeModule { }

正如预期的那样,这部分工作正常。我遇到问题的是当我进入主模块时......我正试图懒惰地加载我的客户模块

const routes: Routes = [
  { path: '', redirectTo: 'main', pathMatch: 'full', children: [
    { path: 'clientes', loadChildren: 'app/clientes/clientes.module#ClientesModule' }
  ]},
];

@NgModule({
  imports: [
    CommonModule,
    MainRoutingModule,
    RouterModule.forChild(routes)
  ],
  declarations: [
    MainComponent,
    HeaderComponent,
  ],
})
export class MainModule { }

在这里使用Cliente模块......

const routes: Routes = [
  { path: '', component: ClientesComponent }
];

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild(routes)
  ],
  declarations: [
    ClientesComponent,
    ClientesOperacoesComponent,
    SearchTableComponent
  ],
  providers: [
    MainService
  ]
})
export class ClientesModule { }

一切正常,直到我尝试访问'/ main / clientes'。它说它无法匹配任何路线:'main / clientes'。现在我已经尝试了多种方法来解决这个问题,但总是遇到同样的问题,如果你能在我的逻辑中找到任何错误,我会非常感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

我在这里查看您的主要模块路线:

const routes: Routes = [
  { path: '', redirectTo: 'main', pathMatch: 'full', children: [
    { path: 'clientes', loadChildren: 'app/clientes/clientes.module#ClientesModule' }
  ]},
];

应该是

const routes: Routes = [
  { path: '', redirectTo: 'main', pathMatch: 'full' },
  { path: 'clientes', loadChildren:'app/clientes/clientes.module#ClientesModule'}
];

答案 1 :(得分:0)

你好我认为你应该改变主要路线的结构如下:

const routes: Routes = [
  { 
    path: '', 
    children [
       { 
         path: 'clientes',
         loadChildren:'app/clientes/clientes.module#ClientesModule'
       }
    ]
  }
];

我认为你已经加载它时不应该重定向到同一个模块,因为你可以进入循环路由的情况。