我需要能够将一些数据(配置)从angular应用程序传递到angular库。要求是该配置需要在库的NgModule的 decorator 中可以访问,因此我可以有条件地导入一些模块。例如:
@NgModule({
imports: [
!envService.data.production ? StoreDevtoolsModule.instrument() : [],
]
})
export class LibrarysModule { }
我找不到与此相关的任何文档,并且在github上没有找到任何明确的答案。角8有可靠的方法吗?
在堆栈溢出时,有几个类似的答案,但是都不适合我的用例(请参阅:passing environment variables to angular2 library)。它们全部说明了如何使用forRoot()
以便将配置传递给库的任何服务或组件。但是,我需要在库模块的装饰器中进行配置。
答案 0 :(得分:0)
您可以在引导时传递外部数据。
在main.ts中,
import { browserDynamicPlatform } from '@angular/platform-browser-dynamic';
import { wrappedAppModule } from './app.module';
export function main(myValue: boolean) {
browserDynamicPlatform().bootstrapModule(wrappedAppModule (myValue));
}
您可以像这样包装ngModule。
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
export function wrappedAppModule (myValue) {
@NgModule({
imports: [
!myValue ? StoreDevtoolsModule.instrument() : [],
]
})
class AppModule { }
return AppModule;
}
在您的index.html中,
<script>
System.import('app')
.then(module => module.main(envService.data.production),
console.error.bind(console)
);
</script>
希望这会有所帮助。