使模块在Angular应用程序中全局可用

时间:2018-12-21 12:49:07

标签: angular angular6 angular7

我有以下模块,可以在其他模块上使用哪些组件:

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

import { CommonModule } from '@angular/common';  
import { ClickOutsideModule } from "ng-click-outside";

import { PopupComponent} from './popup.component';

@NgModule({  
  declarations: [
    PopupComponent
  ],      
  imports: [
    CommonModule,
    ClickOutsideModule
  ],  
  exports: [
    PopupComponent
  ],
  providers: []
})

export class PopupModule {}

我有我的AppModule:

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

import { AppBrowserModule } from './app-browser.module';
import { AppRoutingModule } from './app-routing.module';

import { HomeModule } from './home/home.module';

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

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    AppBrowserModule,  
    HomeModule,
    AppRoutingModule
  ],
  exports: [],
  bootstrap: [ AppComponent ]
})

export class AppModule { }
  1. 是否可以在所有App模块(例如PopupModule)中使用ClickOutsideModule,而无需在每个模块中导入它?

    还是我总是需要将其导入使用它的每个模块中?

  2. AppModule中的导出功能是什么?

1 个答案:

答案 0 :(得分:1)

只需创建一个SharedModule,然后将ClickOutsideModule添加到其importsexports数组中即可。像这样:

import { NgModule } from '@angular/core';
import { ClickOutsideModule } from "ng-click-outside";

@NgModule({ 
  imports: [
    ClickOutsideModule,
    ...
  ],  
  exports: [
    ClickOutsideModule,
    ...
  ],
})
export class SharedModule {}

然后在想要访问SharedModule模块的任何位置导入ClickOutsideModule。例如,如果您要在AppModule中使用它,请按照以下步骤操作:

...
import { SharedModule } from './shared/shared.module';

@NgModule({
  ...,
  imports: [
    SharedModule,
    ...
  ],
  ...
})

export class AppModule { }

您可以对PopupModule做同样的事情:

...
import { SharedModule } from './shared/shared.module';

@NgModule({
  ...,
  imports: [
    SharedModule,
    ...
  ],
  ...
})

export class PopupModule { }