私はangualr2ライブラリyeoman generatorを使用して社内ライブラリを作成しました。ang2ライブラリに環境変数を渡します
いくつかの角度サービスは、現在のアプリケーションで環境変数を使用しています(各envでapiエンドポイントが変更されています)。現在の環境オブジェクトをangular2ライブラリサービスに渡す最善の方法は何ですか?
私はangualr2ライブラリyeoman generatorを使用して社内ライブラリを作成しました。ang2ライブラリに環境変数を渡します
いくつかの角度サービスは、現在のアプリケーションで環境変数を使用しています(各envでapiエンドポイントが変更されています)。現在の環境オブジェクトをangular2ライブラリサービスに渡す最善の方法は何ですか?
あなたが解決策をまだ探している場合は、ここで私があなたが求めていたものと同じように(角度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()
方法を提供する必要があります。 プロバイダの配列では、サービスを提供することができます。値はand moreです。この場合、'env'
は、簡略化のために、指定された環境オブジェクトを保持するトークンとして機能します。代わりにInjectionTokenを使用することもできます。トークンenv
以来
@NgModule({
...
})
export class LibraryModule {
public static forRoot(environment: any): ModuleWithProviders {
return {
ngModule: LibraryModule,
providers: [
ImageService,
{
provide: 'env', // you can also use InjectionToken
useValue: environment
}
]
};
}
}
が今、あなたの
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