我正在尝试添加一个 HttpInterceptor。在 AngularJS 我会写这样的东西:
m.config(["$httpProvider", function($httpProvider) {...}])
但似乎 AngularDart 中没有配置功能。
配置 AngularDart 模块的正确方法是什么?
我正在尝试添加一个 HttpInterceptor。在 AngularJS 我会写这样的东西:
m.config(["$httpProvider", function($httpProvider) {...}])
但似乎 AngularDart 中没有配置功能。
配置 AngularDart 模块的正确方法是什么?
HttpInterceptor 在 AngularDart 中的实现略有不同。
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 的方法。当引导的 angular-dart 应用程序已经启动了某些 Http 调用时,它可能会引入难以调试的计时错误,因此拦截器会错过这些调用。
使用拦截器的正确方法是确保在您的 Angular 应用程序中某处的第一次 Http 调用之前注入它。引导的新语法是这样的:
applicationFactory()
.addModule(new YourAngularApp())
.run();
因此,在 YourAngularApp 中,无论您是Http
第一次注入何处,都可以注入HttpInterceptor
(仅一次)并添加您的自定义拦截器。