了解角度模块导入

时间:2019-07-10 07:15:39

标签: angular module

我正在研究一个在其某些组件中使用FormsModules功能的旧式库,因此FormsModule会在LibraryModule级别导入,如下所示:

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

import { FormsModule } from '@angular/forms';

@NgModule({
    declarations: [
        LabelButtonPrimaryComponent,
        TextAreaComponent,
        TextInputComponent,
    ],
    imports: [
        CommonModule,
        FormsModule
    ]})
 export class IronFrameworkModule { }

当我构建/打包库,然后将其安装在其他一些有角度的应用程序中时,我仍然需要在Application AppModule中导入FormsModule,以使IronLibrary中的组件正常工作。

那是为什么?

1 个答案:

答案 0 :(得分:1)

一个Module才能被其他Module看到和使用,需要将其导入@NgModule类装饰器中,并且仅对该模块可见,因此在您的情况下,{ {1}}仅对FormModule可见,而IronFrameworkModule则看不到。然后有两个选择:

  1. 就像您所做的那样:将AppModule导入到您的FormModule中 现在被AppModule

  2. 看到
  3. 从您的AppModule中导出FormModule,因此     无论IronFrameworkModule导入Module,     IronFrameworkModule也将对他们可见以供使用

或者,您应该创建一个Shared Module,其中包含所有将被重用的Module,Components,Directive...。然后,您只需要将该模块导入其他模块即可,它将代码集中化,因此更易于维护。