使用角度6.0.3
具有导入到根应用程序模块的第三方Azure Adal包装:
@NgModule({
imports: [
....
<3rd party module>.forRoot(<configuration object here>)
....
]
})
export class AppModule {}
[第三方模块定义]
@NgModule()
export class <3rd party module> {
static forRoot(@Inject(<thing to override>) config): ModuleWithProviders {
return {
ngModule: <3rd party module>,
providers: [
...
{ provide: <thing to override>, useValue: config }
...
]
}
};
}
传递给的配置
forRoot
用作
useValue
提供程序的参数。我想我可以在模块引导期间覆盖提供的对象:
<fetch configuration form server>
.then(json =>
platformBrowserDynamic(
[ { provide: <thing to override>, useJson: json } ]
)
.boostrapModule(AppModule)
);
但是,静态提供程序必须早于冒泡顺序,以便以角度解析提供程序,因为提供的对象始终是在应用程序级别传递到ngmodule decorator中的派生配置对象(即在静态提供程序中使用的对象
前根
呼叫)。
尝试分叉第三方库添加
多种
提供指令,并让从属项吞入数组。但这似乎也不管用。完全忽略引导时来自静态提供程序的provide指令(即从未添加到多数组)。
有什么想法吗?