如何使用loadChildren为angular2延迟加载路由器创建plunker

时间:2016-12-05 09:44:00

标签: angular

我面临着为示范问题创建一个问题的问题。 我正在使用{ path: 'mod1', loadChildren: 'mod1.module#Mod1Module'}作为我的路线。然后plunker试图加载这样的URL:

https://run.plnkr.co/XXXXXXXXXX/mod1.module

但它没有找到返回,所以我的探测器没有运行。

以下是plunker网址:https://plnkr.co/edit/Qd8MLYNQVS2NJ6vH3ZC6?p=preview

更新

我已经能够用这个plunker打开仪表板。 https://plnkr.co/edit/zgMigHSEFXxxwUp8QQzr?p=preview 当我尝试在模块1的第1页中导航时,它显示另一个错误。

2 个答案:

答案 0 :(得分:2)

<强> mod1.module.ts

@NgModule({
  imports: [
    Mode1RoutingModule, // <== add this line
    FormsModule,
    ReactiveFormsModule,
    HttpModule,
    CommonModule
  ],
  declarations: [
    routedComponents,
    Mod1Page1Component,
    Mod1Page2Component
  ],
  providers: [
        Mod1AbcService
  ]
})
export class Mod1Module { }

https://plnkr.co/edit/zHso2uuvHec4FHOHGjNH?p=preview

答案 1 :(得分:1)

几个月前我在角度路由器中发现了一个错误,我做了一个Plunkr来演示。 (这个bug现在已经修好了!)。

无论如何,我使用loadChildren来延迟加载一个模块。它可能会对你有所帮助:

const routes: Routes = [
  {path: 'emails', component: EmailsComponent},
  {path: 'auxiliary', outlet: 'aux', component: AuxiliaryComponent},
  {path: 'contacts', loadChildren: 'app/contacts/contacts.module#ContactsModule'},
  {path: '**', redirectTo: 'emails'}
];

完整的Plunkr:http://plnkr.co/edit/ik9lQw971X638ZATLgHR?p=preview

编辑1:

我看了你的Plunkr,我得到了它的工作:
https://plnkr.co/edit/l9oijQwwnXD0mz5FI10h?p=preview

以下是我的所作所为:
  - 将文件mod1.module.ts重命名为src/mod1.module.ts
  - 从redirectTo更改为redirectTo: '/mod1/page1'redirectTo: '/mod1'(您未声明路径'/mod1/page1',因此您无法执行此操作 - 使用这样的路径来延迟加载:{ path: 'mod1', loadChildren: app/mod1.module#Mod1Module'}