1

我有这样的主模块,在其中导入基本库:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { MaterialModule } from '@angular/material';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';

import { MapModule } from './map/map.module';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MapModule,
    MaterialModule.forRoot()
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

我的问题是当我在应用程序中创建一个新模块时,即地图模块,我是否需要将所有这些库重新导入该模块。我的印象是,如果我在模块上导入库,它将在子模块下工作。

但是在我的地图模块中,我遇到了类似的错误。

Can't bind to 'ngClass' since it isn't a known property of 'div'.

我当前的 MapModule 看起来像

import { NgModule } from '@angular/core';

import { MapComponent } from './map.component';
import { MapMenuComponent } from './map-menu/map-menu.component';
import { MapControlsComponent } from './map-controls/map-controls.component';
import { MapService } from './map.service';


@NgModule({
    imports: [],
    exports: [],
    declarations: [MapMenuComponent, MapControlsComponent, MapComponent],
    providers: [MapService],
})
export class MapModule { }

我是否需要再次将 MaterialModule、Forms 等重新导入模块中才能使该模块中的组件正常工作?

4

2 回答 2

3

您只需要重新导入带有声明的模块,即定义新组件、指令和管道的模块。注册提供者的模块不需要导入。

在此列表中:

  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MapModule,
    MaterialModule.forRoot()
  ],

FormsModule模块需要导入,HttpModule不需要。BrowserModulere-exports CommonModule,所以在其他模块中你可能想要 import CommonModule,而不是BrowserModuleNgClass. 通过导入CommonModule,您将不会出现此错误:

无法绑定到“ngClass”,因为它不是“div”的已知属性。

于 2017-02-22T12:10:56.203 回答
0

您可以使用 SharedModule。在多个模块中使用的所有模块

共享模块示例

import { NgModule } from '@angular/core';
import { anyService} from './any.service';

@NgModule({
  providers: [anyService]
})
export class SharedModule {}   

现在您可以在任何想要使用此模块的模块中导入此共享模块

于 2017-03-17T11:27:12.023 回答