使用forRoot()在多个模块之间共享模块

时间:2018-05-17 03:56:45

标签: angular

我正在开发一个角度应用程序,我有多个模块。我想要以下结构

enter image description here

如果我有共同模块,将在共享模块中导入,在app模块中,只会导入共享模块。这里的主要问题是我想要一个公共模块中存在的服务的单个实例。我正在尝试

第1单元

export class CommonModule1 {
    static forRoot(): ModuleWithProviders {
        return {
            ngModule: CommonModule1,
            providers: MODULE_PROVIDERS2
        };
    }
}

第2单元

export class CommonModule2 {
        static forRoot(): ModuleWithProviders {
            return {
                ngModule: CommonModule2,
                providers: MODULE_PROVIDERS
            };
        }
    }

在共享模块中,我将这两个模块导入为

@NgModule({
    imports: [CommonModule1.forRoot(), CommonModule2.forRoot()],
    providers: [],
    entryComponents: []
})

export class SharedModule {
    static forRoot(): ModuleWithProviders {
        return {
            ngModule: SharedModule,
            providers: MODULE_PROVIDERS3
        };
    }
}

在app模块中我正在做

imports: [SharedModule.forRoot()]

并在app模块的子模块中

imports: [SharedModule]

一切正常。但我发现,在应用程序模块的每个子模块中都创建了CommonModule1和CommonModule2的新服务实例。我究竟做错了什么 。请帮忙。我被卡住了。

0 个答案:

没有答案