7
我使用angualr2库自动生成器创建了公司内部库。将环境变量传递给angular2库
一些角度服务正在我们当前的应用程序中使用环境变量(每个env都会更改api端点)。我想知道将当前环境对象传递给angular2库服务的最佳方式是什么?
我使用angualr2库自动生成器创建了公司内部库。将环境变量传递给angular2库
一些角度服务正在我们当前的应用程序中使用环境变量(每个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()
方法。 在providers数组中,您可以提供服务,值为and more。在这种情况下,为了简单起见,'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());
}
}
我希望有帮助!
你得到了这个答案吗?我想要做同样的事情 – leopic