使用延迟加载以使用Angular2的问题

时间:2017-02-09 00:36:37

标签: angular angular2-routing

注意:我在SO上搜索了十几个关于延迟加载的相关问题,但我无法使用它们来解决我的问题。

Error: Cannot find 'ContactModule' in 'app/contact.module'

我已经开始使用基于Angular CLI的新项目,并且Windows中的节点控制台偶尔会提到webpack: Compiling...所以我相信我正在使用它,但我在项目中看不到任何webpack.config.js提到的其他问题需要改变。

这是我的app.module.ts

const appRoutes: Routes = [
  { path: '', component: HomeComponent },
  { path: 'contact', loadChildren: 'app/contact.module#ContactModule' },
];

//...imports...
@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
    // ContactComponent,
    // ContactFormComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    JsonpModule,
    RouterModule.forRoot(appRoutes)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

我的延迟加载子模块:

//...imports...
const ROUTES = [
  { path: '', component: ContactComponent },
];

@NgModule({
    declarations: [
        ContactComponent,
        ContactFormComponent
    ],
  imports: [RouterModule.forChild(ROUTES)],
})
class ContactModule {}

我的文件夹结构和packages.json的一些图像,如果有帮助的话。 enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

我花了一些时间来弄清楚这一点,因为我遇到的很多答案都没有在他们的例子中...

延迟加载的模块需要在类中override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "restaurantcell") as? RestaurantTableCell let restaurant: Restaurant = restaurantArray[indexPath.row] cell?.name?.text = restaurant.name cell?.picture?.image = restaurant.image return cell! } ,并且需要导入export以及您正在使用的任何其他内容,例如表单。

答案 1 :(得分:1)

首先,您应该导出ContactModule:

export class ContactModule {}