我的代码有2个子控制器扩展父级。
export class ParentController{
constructor(public A: service A, public B: service B, public C: service C)
}
export class ChildController1 extends ParentController{
constructor(A: service A, B: service B, C: service C);
super(A,B,C);
}
export class ChildController2 extends ParentController{
constructor(A: service A, B: service B, C: service C);
super(A,B,C);
}
虽然代码运行完美而没有缩小,但是当我运行minifeld版本时,它会给出未知提供者:tProvider< -t error 。
我确实读过有关$ injector的信息,但我不明白如何在Typescript中使用它。
有没有更好的方式来表示我的代码,或者这是我在这里遗失的非常明显的事情?
答案 0 :(得分:1)
t
服务名称表示应用程序已缩小。为了使其正常工作,所有DI单位应为annotated。
注释类的首选方法是static $inject
property。在TypeScript和ES.next中,可以将其指定为static class field:
export class ParentController{
static $inject = ['A', 'B', 'C'];
constructor(public A: service A, public B: service B, public C: service C) {}
}
如果子控制器共享相同的依赖集并且不需要自己的构造函数,则子类中可以省略constructor
和$inject
。