angular-cli
私はdeploydバックエンドで使用したいプロジェクトを生成しました。 Deploydには、http://<deployd-host>/dpd.js
からロード可能なAPIにアクセスするためのスクリプトが用意されています。これにより、グローバルなオブジェクトが作成され、javascriptのグローバルコンテキスト(例:Chrome開発ツールコンソールから)からAPIにアクセスできます。Angular2サービスでの外部スクリプトのラップ
これをAngular2サービスでラップしてテストなどのための模擬テストを挿入することができます。タスクはURLからスクリプトを読み込んでから、グローバルdpd
オブジェクトにアクセスすることです。私はthisの投稿を見ましたが、受け入れられた回答を得ることができませんでした。 document
オブジェクトに手動でスクリプトを追加すると、window
のdpdオブジェクトにアクセスできません。
また、スクリプトが読み込まれるURLは、環境に応じて異なります(例:ローカルのdevの場合はhttp://localhost:3000/dpd.js
、ステージングの場合はhttp://dev.example.com/dpd.js
、プロダクションの場合はです。理想的には、サービスでもそれを設定できるようになります。
以下のようなものをお探しですか?
@Injectable()
export class DpdService {
constructor() {
if (getEnvironmentSomeHow() == 'development') {
loadScriptFrom("http://localhost:3000/dpd.js");
} else {
loadScriptFrom("http://dev.example.com/dpd.js");
}
dpd = window.dpd;
}
public session(): Observable<Session> {
return Observable.fromPromise(dpd.sessions.get());
}
}
いくつかのコードを共有できます –
可能な複製:http://stackoverflow.com/questions/39942118/how-to-inject-different-service-based-on-certain-build-environment-in-angular2/39942256#39942256コード – Karl
による非常に詳細な説明あなたが質問に示したアプローチの問題は何ですか? – estus