問題タブ [angular-factory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - Angular の依存関係プロバイダー ファクトリにクエリ パラメーターを挿入する
window.location理想的には慣用的な Angular の方法で、依存関係プロバイダー ファクトリの本体に渡される検索パラメーターの値が必要です。
ユース ケース: 初めての Angular アプリを作成する あるポートでアプリを実行し、別のポートでバックエンド サーバーを実行しています。URLに追加&backend=localhost:12345して、アプリがそのホストと通信できるようにします。これは読み取り専用で、URL バーに手書きされています。そのような URL に移動したくありません。
検討されたアプローチ:
window.location.href直接使用してください。コードをブラウザーに依存させ、テスト フィクスチャや、ブラウザー外でコードを実行しようとするその他のものを破壊する可能性があります。- を使用し
PlatformLocation.hrefます。ドキュメントには、「このクラスは、アプリケーション開発者が直接使用するべきではありません」と記載されています。</li> - を使用し
Location.path()ます。動作しているように見えますが、完全な URL にアクセスする方法も提供していないようです。スタンドアロン パスにはクエリ パラメータが含まれていますが、URLコンストラクタへの引数としては無効のように見えるため、最終的にnew URL('http://no-such-host/' + location.path()).searchParams.get('backend'). ほとんどエレガントではありません。 ActivatedRoute.queryParamsなんとなく使う。ファクトリに を注入するActivatedRouteと、明らかにデフォルトのインスタンス ( として文字列化Route(url:'', path:'')) が得られるため、クエリ パラメータがないように見えます。queryParamsメソッドは を返しますが、Observableネットで読んだところによると、プロバイダー ファクトリに非同期コード フローを使用するのは、せいぜいトリッキーです。
ファクトリがクエリ パラメータに基づいて決定を下せるようにするためのより良い方法はありますか?