Angular库中的意外值



我有一个Angular库,里面有来自Angular应用的url的提供商。

export class XXXModule {
static config(SERVER_ADDRESS: string): ModuleWithProviders<any> {
return {
ngModule: XXXModule,
providers: [
{
provide: SERVER_ADDRESS,
useValue: SERVER_ADDRESS
}
]
}
}
}

这个库(XXXModule)是从Angular应用中的惰性加载模块(DashboardModule)中导入的,使用

export const SERVER_ADDRESS = environment.SERVER_ADDRESS;
imports: [
XXXModule.config(SERVER_ADDRESS)
]

SERVER_ADDRESS在环境文件中定义,用于如下的生产

SERVER_ADDRESS: window.location.protocol + '//' + window.location.host

在app.module.ts文件中通过路由

调用延迟加载模块(DashboardModule)
export const AppRoutes = [
{
path: 'main',
canActivateChild: [AuthGuard],
loadChildren: () =>
import('./components/main/main.module').then(
m => m.DashboardModule
)
}
]

但是,我的问题是SERVER_ADDRESS的意外值,我在我的Angular库中得到了这个地址。

https://test.com/null//null/dynamicExecution/getAll

意想不到的部分是这个/null//null

首先对provideuseValue属性使用相同的值是没有意义的。稍后如何获取该值?看到InjectionToken。

另外,在环境文件中使用window.location也可能导致问题。window属性在angular构建应用时不可用。

相关内容