angular 5,将配置数据传递给导入的子模块
发布时间:2020-12-17 17:10:59 所属栏目:安全 来源:网络整理
导读:我的库中有一个主模块,我可以使用forRoot调用并传递一些配置数据(如此处所见) export const MODULE_OPTIONS = new InjectionTokenModuleOptions('MODULE_OPTIONS');@NgModule({ imports: [ MySubModule.forRoot(//needs access to options) ]})export class
我的库中有一个主模块,我可以使用forRoot调用并传递一些配置数据(如此处所见)
export const MODULE_OPTIONS = new InjectionToken<ModuleOptions>('MODULE_OPTIONS'); @NgModule({ imports: [ MySubModule.forRoot(//needs access to options) ] }) export class MyModule { static forRoot(options: ModuleOptions = {}): ModuleWithProviders { return { ngModule: MyModule,providers: [ { provide: MODULE_OPTIONS,useValue: options } ] } } } 当我的主模块“MyModule”导入应用程序/模块时,我的子模块现在还需要访问我从外部提供的选项. 如何将MyModule.forRoot中提供的ModuleOptions传递给MySubModule? 解决方法
我找不到任何正式的方法,所以我找到了一种方法,但它是一种解决方法.
您可以在MyModule.forRoot函数中调用MySubModule.forRoot并分配提供程序. (但如果子模块中有组件/指令,也可以导入/导出子模块.) export const MODULE_OPTIONS = new InjectionToken<ModuleOptions>('MODULE_OPTIONS'); @NgModule({ //You don't have to import/export if MySubmodule doesn't have any component/directive declaration. imports: [MySubModule],exports:[MySubModule] }) export class MyModule { static forRoot(options: ModuleOptions = {}): ModuleWithProviders { //Now we are able to provide services/values that uses options in the MySubmodule. const moduleProviders= MySubmodule.forRoot(options).providers; moduleProviders.push({provide: MODULE_OPTIONS,useValue: options}); return {ngModule: MyModule,providers: moduleProviders}; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |