角.注入器不像想象的那样工作
angular.injector not behaving as imagined
我正在尝试使用angular。注入器作为服务定位器来检索基类中的服务,许多控制器都是从基类中派生出来的。我这样做是因为我不想为了获得服务的一个实例而修改几十个控制器的构造函数签名。我非常乐意牺牲这样的流氓服务,以避免在我的控制器上进行大量有风险的工作。
我的基本控制器是这样的:
module Controllers {
"use strict";
export class MyBaseController {
static $inject = ["$q"];
protected qService: angular.IQService;
private myService: Services.MyService;
constructor($q: angular.IQService) {
this.qService = $q;
// falls over on this next line
this.myService = angular.injector(["myApp"]).get("MyService");
}
protected myBehaviour(details: any) {
this.myService.myServiceMethod(details);
}
}
}
我的服务是这样的:
module Services {
"use strict";
export class MyService {
static $inject = ["$modal"];
private modal;
private modalInstance;
constructor($modal) {
this.modal = $modal;
}
public myServiceMethod() {
// do something with $modal
}
}
}
在我的控制器的行错误看起来像这样:
Error: [$injector:unpr] Unknown provider: $rootElementProvider <- $rootElement <- $animate <- $compile <- $modalStack <- $modal <- ApplicationErrorService
我是否误解了注射器的功能?是否存在由于服务本身具有无法解决的依赖关系而无法创建服务实例的问题?
非常感谢您对这个问题的帮助。
是我无法创建服务实例的问题,因为服务本身具有无法解决的依赖关系
是的。特别是$rootElement
是不可用的。这是在 angular被引导之前执行的信号:https://docs.angularjs.org/api/ng/function/angular.bootstrap
相关文章:
- AngularJS 服务注入器错误
- 在运行时从Angular注入器检索实例
- 最小化httpInterceptor AngularJS$注入器错误
- 难以理解的工作装饰器功能
- AngularJS:骨架应用程序上的注入器模块rr错误
- 通过注入器获取url参数查询
- 如何修复角度缩小生成后的注入器错误
- 如何使用TypeScript静态注入器模式注入“$rootScope”
- 注入器使用什么逻辑来决定传递给控制器的作用域?
- 在指令中手动从注入器获取依赖
- Angularjs,Karma控制器单元测试注入器:modulerr
- AngularJs注入器模块错误
- 为什么我不能把服务注入到Angular的工厂/注入器中?
- 角注入器错误帮助>
- 注入器已创建.无法注册模块
- Angular注入器自调用函数语法错误
- AngularjS美元注入器:unpr
- 尝试使用角网格化时,Angular注入器出错
- Angular无法在IE9上工作,可能是由于内部注入器
- 角.注入器不像想象的那样工作