将环境变量传递给angular2库
我使用angualr2-library yeoman generator创建了公司内部库。
一些角度服务正在我们当前的应用程序中使用环境变量(每个env都会更改api端点)。 我想知道将当前环境对象传递给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()
方法。 在提供者数组中,您可以提供服务,值等。 在这种情况下,为了简单起见, 'env'
充当给定环境对象的标记。 您也可以使用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
}
]
};
}
}
由于令牌env
现在由您提供的LibraryModule
,你可以在所有的其子服务或组件注入它。
@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());
}
}
我希望这有助于!
链接地址: http://www.djcxy.com/p/96023.html上一篇: passing environment variables to angular2 library
下一篇: Get the ref present in child component in the parent component