gpt4 book ai didi

angular - 将环境变量传递给 Angular 库

转载 作者:太空狗 更新时间:2023-10-29 16:50:10 25 4
gpt4 key购买 nike

我使用 angualr2-library yeoman 生成器创建了公司内部库。

一些 Angular 服务在我们当前的应用程序中使用环境变量(api 端点在每个 env 上都发生了变化)。我想知道将当前环境对象传递给 angular2 库服务的最佳方式是什么?

最佳答案

如果您仍在寻找解决方案,以下是我如何完成与您所要求的类似的事情(使用 Angular 4.2.4)。

在您的 AppModule(或您要导入库的位置)中,调用 LibraryModule 上的 forRoot() 方法。借助此功能,您可以将任何配置值传递给您的库,例如您应用的环境。

import {environment} from "../environments/environment";
...

@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
...
LibraryModule.forRoot(environment)
],
bootstrap: [AppComponent]
})
export class AppModule {
}

LibraryModule 当然需要提供 forRoot() 方法。在 providers 数组中,您可以提供服务,值 and more .在这种情况下,为简单起见,'env' 充当持有给定环境对象的 token 。您还可以使用 InjectionToken相反。

@NgModule({
...
})
export class LibraryModule {

public static forRoot(environment: any): ModuleWithProviders {

return {
ngModule: LibraryModule,
providers: [
ImageService,
{
provide: 'env', // you can also use InjectionToken
useValue: environment
}
]
};
}
}

由于 token env 现在由您的 LibraryModule 提供,您可以将它注入(inject)到它的所有子服务或组件中。

@Injectable()
export class ImageService {

constructor(private http: Http, @Inject('env') private env) {
}

load(): Observable<any> {
// assume apiUrl exists in you app's environment:
return this.http.get(`${this.env.apiUrl}/images`)
.map(res => res.json());
}

}

关于angular - 将环境变量传递给 Angular 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43529920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com