在使用 Angular 模块联邦 Webpack 时,如果你在应用程序中使用了响应式表单 FormControl,可能会出现控件重复的问题。这是因为 Webpack 会为每个被联邦的模块打包一个独立的 chunk,而这些模块中可能会有相同的 FormControl 控件。
为了解决这个问题,可以在应用程序模块中创建一个共享模块,把所有的 FormControl 控件都放在这个共享模块中,然后在每个需要使用 FormControl 的模块中引入共享模块即可。
下面是一个代码示例:
共享模块:
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [FormsModule, ReactiveFormsModule],
exports: [FormsModule, ReactiveFormsModule]
})
export class SharedModule {}
在应用程序模块中引入共享模块:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { SharedModule } from './shared/shared.module';
@NgModule({
imports: [BrowserModule, SharedModule],
bootstrap: [AppComponent]
})
export class AppModule {}
在使用 FormControl 的模块中引入共享模块:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from '../shared/shared.module';
import { MyComponent } from './my.component';
@NgModule({
imports: [CommonModule, SharedModule],
declarations: [MyComponent],
exports: [MyComponent]
})
export class MyModule {}
参考资料: