Angular 6 - 为子模块导入共享模块
Angular 6 - Importing shared module for child modules
我正在尝试创建一个共享模块,但不知何故无法正常工作。
共享模块如下所示:
import { ModuleWithProviders, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedMetaModule } from './shared-meta';
import { ApplicationState } from './state/application-state';
import { MilitaryTimePipe } from './pipes/military-time-pipe';
import { KeysPipe } from './pipes/object-pipe';
import { GirlsClass } from './advertisers/girls';
@NgModule({
imports: [CommonModule],
declarations: [
KeysPipe,
MilitaryTimePipe
],
exports: [
SharedMetaModule,
KeysPipe,
MilitaryTimePipe
],
providers: [ApplicationState]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
return { ngModule: SharedModule };
}
}
我有一个 app.module.ts 这样的:
import { SharedModule } from '@shared/shared.module';
@NgModule({
imports: [
...
SharedModule.forRoot(),
然后我有一个配置文件-gallery.module.ts,其中将使用来自共享模块的管道。
如果我不在配置文件库模块中导入共享模块,我会收到此错误:
The pipe 'keys' could not be found.
如果我将共享模块导入配置文件库模块,我会收到此错误:
MetaModule already loaded; import in root module only.
在这种情况下如何使用共享模块?
共享模块的目的是在所有需要的模块中多次导入它。所以不需要 forRoot 方法来确保只导入一次。
完全删除 forRoot 方法并在需要的地方导入模块:
import { SharedModule } from '@shared/shared.module';
@NgModule({
imports: [
...
SharedModule,
我正在尝试创建一个共享模块,但不知何故无法正常工作。
共享模块如下所示:
import { ModuleWithProviders, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedMetaModule } from './shared-meta';
import { ApplicationState } from './state/application-state';
import { MilitaryTimePipe } from './pipes/military-time-pipe';
import { KeysPipe } from './pipes/object-pipe';
import { GirlsClass } from './advertisers/girls';
@NgModule({
imports: [CommonModule],
declarations: [
KeysPipe,
MilitaryTimePipe
],
exports: [
SharedMetaModule,
KeysPipe,
MilitaryTimePipe
],
providers: [ApplicationState]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
return { ngModule: SharedModule };
}
}
我有一个 app.module.ts 这样的:
import { SharedModule } from '@shared/shared.module';
@NgModule({
imports: [
...
SharedModule.forRoot(),
然后我有一个配置文件-gallery.module.ts,其中将使用来自共享模块的管道。
如果我不在配置文件库模块中导入共享模块,我会收到此错误:
The pipe 'keys' could not be found.
如果我将共享模块导入配置文件库模块,我会收到此错误:
MetaModule already loaded; import in root module only.
在这种情况下如何使用共享模块?
共享模块的目的是在所有需要的模块中多次导入它。所以不需要 forRoot 方法来确保只导入一次。
完全删除 forRoot 方法并在需要的地方导入模块:
import { SharedModule } from '@shared/shared.module';
@NgModule({
imports: [
...
SharedModule,