HttpInterceptor を追加しようとしています。AngularJS では、次のように記述します。
m.config(["$httpProvider", function($httpProvider) {...}])
しかし、AngularDart には設定機能がないようです。
AngularDart モジュールを構成する正しい方法は何ですか?
HttpInterceptor を追加しようとしています。AngularJS では、次のように記述します。
m.config(["$httpProvider", function($httpProvider) {...}])
しかし、AngularDart には設定機能がないようです。
AngularDart モジュールを構成する正しい方法は何ですか?
AngularDart では、HttpInterceptor の実装が少し異なります。
main() {
// define your interceptor
var intercept = new HttpInterceptor();
intercept.request = (HttpResponseConfig requestConfig) => /* something */;
intercept.response = (HttpResponse response) => /* something */;
intercept.requestError = (dynamic error) => /* something */;
intercept.responseError = (dynamic error) => /* something */;
// get hold of the HttpInterceptors instance -- there are many ways to do this.
Injector injector = ngBootstrap(/* ... */);
var interceptors = injector.get(HttpInterceptors);
// register/add your interceptor
interceptors.add(intercept)
}
API の詳細:
http://ci.angularjs.org/view/Dart/job/angular.dart-master/javadoc/angular.core.dom/HttpInterceptors.html http://ci.angularjs.org/view/Dart/job/angular .dart-master/javadoc/angular.core.dom/HttpInterceptor.html
@pavelgj による回答は、HttpInterceptor
s を使用する完全に正しい方法ではありません。特定の Http 呼び出しがブートストラップされた angular-dart アプリによって既に開始されている場合、デバッグが困難なタイミング エラーが発生する可能性があるため、インターセプターはそれらの呼び出しを見逃す可能性があります。
インターセプターを使用する正しい方法は、angular アプリ内のどこかで最初の Http 呼び出しの前にインターセプターを挿入することです。ブートストラップの新しい構文は次のとおりです。
applicationFactory()
.addModule(new YourAngularApp())
.run();
そのため、YourAngularApp 内Http
で、初めて注入する場合はいつでも、HttpInterceptor
(1 回だけ) を注入して、カスタム インターセプターを追加できます。