我正在尝试创建一组控制器类,它们都派生自一个具有许多依赖项的基类。每次我想要创建一个派生类时,我都必须将基类构造函数的依赖关系复制到派生类构造函数中。这似乎特别丑陋和重复。如下所示:
module MyModule
{
export class ParentCtrl
{
constructor($http, $provide, $scope,$compile,MyService,$parse,$timeout)
{
console.log('parent');
}
FunctionA(){...}
...
FunctionZ(){...}
}
export class ChildCtrl extends ParentCtrl
{
constructor($http, $provide, $scope,$compile,MyService,$parse,$timeout)
{
super($http, $provide, $scope,$compile,MyService,$parse,$timeout);
console.log('child');
}
FunctionA(){ console.log('Override A'); }
}
export class GrandChildCtrl extends ChildCtrl
{
constructor($http, $provide, $scope,$compile,MyService,$parse,$timeout)
{
super($http, $provide, $scope,$compile,MyService,$parse,$timeout);
console.log('grandchild');
}
FunctionB(){ console.log('Override B'); }
}
}
为了方便阅读,我已经从构造函数参数中删除了类型定义。
有没有办法避免这些冗长的构造函数被复制?我曾考虑在基础/父控制器中添加一个函数,该函数从构造函数中调用以注入所需的类型。这将意味着依赖关系将限制在基类中。
之前有人成功尝试过吗?
$http
一样获取$injector
。预见:如果它适合你,请使用它 :) - basaratFunctionA(){...} } export class ChildCtrl extends ParentCtrl { constructor($injector) { super($injector); console.log('child'); } FunctionA(){ console.log('Override A'); } }`
- devman81