首页 文章

配置AngularDart模块

提问于
浏览
2

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

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

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

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

2 回答

  • 3

    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

  • 4

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

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

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

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

相关问题