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