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