具有根级别导入的Angular2应用程序模块

前端之家收集整理的这篇文章主要介绍了具有根级别导入的Angular2应用程序模块前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
根本级别的导入不应该全局可用(全局我指的是所有子模块和组件)?

我有以下root / app模块:

  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { NgModule,ApplicationRef } from '@angular/core';
  3. import { CommonModule } from '@angular/common';
  4. import { FormsModule } from '@angular/forms';
  5. import { AppComponent } from './app.component';
  6. import { HttpModule } from '@angular/http';
  7. import { RouterModule } from '@angular/router';
  8. import { appRouterProviders,routing } from './app.routes';
  9. import { DashboardModule } from './dashboard/dashboard.module';
  10. import { DecisionModule } from './decision/decision.module';
  11. import { MdCoreModule } from '@angular2-material/core';
  12. import { MdButtonModule } from '@angular2-material/button';
  13. import { MdCardModule } from '@angular2-material/card';
  14. import { MdListModule } from '@angular2-material/list';
  15. import { MdSidenavModule } from '@angular2-material/sidenav';
  16. import { MdToolbarModule } from '@angular2-material/toolbar';
  17. import { MdIconModule } from '@angular2-material/icon';
  18.  
  19. @NgModule({
  20. declarations: [
  21. AppComponent
  22. ],imports: [
  23. BrowserModule,CommonModule,FormsModule,HttpModule,RouterModule,routing,DashboardModule,MdCoreModule,MdButtonModule,MdCardModule,MdListModule,MdSidenavModule,MdToolbarModule,MdIconModule
  24. ],providers: [
  25. appRouterProviders
  26. ],entryComponents: [ AppComponent ],bootstrap: [ AppComponent ]
  27. })
  28. export class AppModule {
  29.  
  30. }

如果我尝试在我的子模块中使用它们@R_301_484@的材质元素,这就是子模块的样子:

  1. import { NgModule } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3. import { FormsModule } from '@angular/forms';
  4. import { dashboardRouting } from './dashboard.routes';
  5. import { DashboardComponent } from './dashboard.component';
  6. import { ActionsDialogComponent } from './actions-dialog';
  7.  
  8. @NgModule({
  9. imports: [
  10. CommonModule,dashboardRouting,],declarations: [
  11. DashboardComponent,ActionsDialogComponent
  12. ],providers: [
  13. ]
  14. })
  15. export class DashboardModule {}

但是,如果我导入它们显示的子模块中的材料模块.这是材料设计组件工作时子模块的样子:

  1. import { NgModule } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3. import { FormsModule } from '@angular/forms';
  4. import { dashboardRouting } from './dashboard.routes';
  5. import { DashboardComponent } from './dashboard.component';
  6. import { ActionsDialogComponent } from './actions-dialog';
  7. import { MdCoreModule } from '@angular2-material/core';
  8. import { MdButtonModule } from '@angular2-material/button';
  9. import { MdCardModule } from '@angular2-material/card';
  10. import { MdListModule } from '@angular2-material/list';
  11. import { MdSidenavModule } from '@angular2-material/sidenav';
  12. import { MdToolbarModule } from '@angular2-material/toolbar';
  13. import { MdIconModule } from '@angular2-material/icon';
  14.  
  15. @NgModule({
  16. imports: [
  17. CommonModule,MdIconModule,providers: [
  18. ]
  19. })
  20. export class DashboardModule {}

如果材料模块已经在根级别导入,为什么必须再次在子级别上导入材料模块?

在Angular2中的组件概念中,没有什么比您所指的“根级别”更好. 组件是模块化的部件,非常类似于Java(或任何高级语言)项目中的类 – 您还可以导入您使用的每个类. 它们可以嵌套或互相使用,但仍然每个组件都需要导入自己的依赖项. 请注意,在Angular2中导入是一种非常不同的方法,而不是在Angular 1中包含外部模块/库(然后基本上在index.html中为每个依赖项创建一个新引用). 首先是Angular 2中的那些导入,因为Typescript编译器需要知道组件中使用的是什么(因此增加了一些功能来进行错误检查) 编译和打包的构建应该只包含一次依赖(假设一切都正确配置).

猜你在找的Angularjs相关文章