これは、各リクエストに認証トークンを添付するインターセプターをどのようにセットアップしたかの実例です (これは多かれ少なかれhttps://docs.angularjs.org/api/ng/service/ $http の例です) 。
angular.module("app", [])
.config(function ($httpProvider) {
$httpProvider.interceptors.push("authInterceptor");
})
.factory("authInterceptor", function ($q) {
return {
// interceptor configuration here
}
})
config
andブロックには、さまざまな角度モジュールからサービスを呼び出して開始する他のものがたくさんあるrun
ので、少し整理したいと思います。ただし、ブロックでの依存性注入には非常に具体的なルールがいくつかあることを理解していconfig
ますが、これはよくわかりません。これらはauthInterceptor
、別のモジュールでファクトリを定義することを妨げています。config
andブロック内の他のロジックがrun
アプリ内の他のモジュールを呼び出すため、そのインターセプターを宣言するのは場違いに見えます。
これは私がやりたいことです:
angular.module("services.authInterceptor", [])
.factory("authInterceptor", function ($q) {
return {
// interceptor configuration here
}
});
angular.module("app", [
"services.authInterceptor"
]).config(function ($httpProvider, authInterceptor) {
$httpProvider.interceptors.push("authInterceptor");
});
// Error: Unknown provider authInterceptor.
代わりにブロックに注入しようとしましたが、そこrun
に注入することは許可されていないと思います$httpProvider
:
angular.module("app", [
"services.authInterceptor"
]).run(function ($httpProvider, authInterceptor) {
$httpProvider.interceptors.push("authInterceptor");
});
// Error: Unknown provider: $httpProviderProvider <- $httpProvider
モジュールをどこに注入して、それ$httpProvider
も注入可能にする必要がありますか? また、インターセプターを既存のものにどこに追加する必要がありますか? 私の主な目標は、インターセプターやその他の同様のサービスを、独自の自己完結型モジュールに保持することです。
編集
provider
代わりにa を宣言すると、近づいているように見える別のエラーが発生しますfactory
(何らかの理由で、これらは交換可能であると常に考えていました):
angular.module("services.authInterceptor")
.provider("authInterceptor", function ($q) {
return {}
})
// Error: Unknown provider: $q
authInterceptor
そのため、ブロックに正常に注入されるようになりましconfig
たが、検索しようとすると失敗します$q
。