使用 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)
);
然而,静态提供者必须在 Angular 中解析提供者的起泡顺序中更早,因为提供的对象始终是在应用程序级别的 NgModule 装饰器中传递的一个派生配置对象(即在静态forRoot
调用中使用的那个)。
尝试分叉 3rd 方库,将multi添加到提供指令并让依赖项吞下一个数组。但这似乎也不起作用。引导时来自静态提供程序的提供指令被完全忽略(即从未添加到多数组中)。
有任何想法吗?