使用Angular 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装饰器中传递的一个派生配置对象,因此静态提供者必须早于冒泡顺序才能在Angular中解析提供者。 forRoot
通话。)
尝试分叉第三方库,在provider指令中添加 multi ,并让相关者吞下一个数组。但这似乎也不起作用。完全忽略引导时(即从不将其添加到多数组中),静态提供程序提供的Provide指令。
有什么想法吗?