2

您如何在 Angular dart 中手动注入实例?这将等效于 angularjs 中的以下内容:

var myInjector = angular.injector(["ng"]);
var $http = myInjector.get("$http");
4

3 回答 3

2

组件内部的代码示例。

@NgComponent(
    selector: 'rating',
    publishAs: 'ctrl')
class RatingComponent {
  Injector _injector;
  RatingConfig _config;

  RatingComponent(this._injector) {
    _config = _injector.get(RatingConfig);
    // or
    _config = injectByName("RatingConfig");
  }

  void injectByName(String typeName) {
    _injector.types.takeWhile((Type e) {
      if (e.toString() == typeName) {
        _config = _injector.get(e);
        return false;
      }
      return true;
    });    
  }
}
于 2014-01-03T14:07:10.263 回答
2

使用 _injector.get(RatingConfig) 的方法将起作用。

例如,过滤器代码在注入器上显式调用“get”以获取过滤器的实例:lib/core/filter.dart,第 50 行

于 2014-01-07T06:15:49.277 回答
1

如果您需要手动注入实例,因为您在 main() 方法中,您可以执行以下操作:

class MyAppModule extends Module {
  MyAppModule() {
    type(MyService);
  }
}

main() {
  Injector injector = applicationFactory().addModule(new MyAppModule()).run();
  MyService myService = injector.get(MyService);
}
于 2014-03-14T19:45:49.927 回答