我正在研究一个在其某些组件中使用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中的组件正常工作。
那是为什么?
答案 0 :(得分:1)
一个Module
才能被其他Module
看到和使用,需要将其导入@NgModule类装饰器中,并且仅对该模块可见,因此在您的情况下,{ {1}}仅对FormModule
可见,而IronFrameworkModule
则看不到。然后有两个选择:
就像您所做的那样:将AppModule
导入到您的FormModule
中
现在被AppModule
从您的AppModule
中导出FormModule
,因此
无论IronFrameworkModule
导入Module
,
IronFrameworkModule
也将对他们可见以供使用
或者,您应该创建一个Shared Module
,其中包含所有将被重用的Module,Components,Directive...。然后,您只需要将该模块导入其他模块即可,它将代码集中化,因此更易于维护。