配置AngularDart模块

时间:2013-11-11 18:26:14

标签: dart angular-dart

我正在尝试添加HttpInterceptor。在AngularJS中,我会写这样的东西:

m.config(["$httpProvider", function($httpProvider) {...}])

但似乎AngularDart中没有配置功能。

配置AngularDart模块的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

在AngularDart中,HttpInterceptors的实现略有不同。

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

答案 1 :(得分:3)

@pavelgj的回答并不是完全正确的使用HttpInterceptor的方法。它可能会引入难以调试的定时错误,当某些Http调用已经由bootstrapped angular-dart app启动时,因此拦截器会错过这些调用。

使用拦截器的正确方法是确保在角度应用程序内的第一个Http调用之前注入它。 bootstrapping的新语法是:

applicationFactory()
  .addModule(new YourAngularApp())
  .run();

因此,在YourAngularApp中,无论您何时第一次注入Http,都可以注入HttpInterceptor(仅一次)并添加自定义拦截器。