Angular 5 Class 通过注入扩展 class

Angular 5 Class extends class with injections

我创造了这样一个class

@Injectable FooService {

    constructor(private _bar:BarService){

    }
}

并像这样扩展它

@Injectable ExtFooService extends FooService {

    constructor(private _bar:BarService){
        super(_bar);
    }
}

这样我得到以下错误:

Error:(12, 14) TS2415:Class 'ExtFooService' incorrectly extends base class 'FooService'. Types have separate declarations of a private property '_bar'.

为什么会这样?

我尝试从 ExtFooService 中删除注入,但我在 super() 行得到了这个:

Error:(21, 9) TS2554:Expected 2 arguments, but got 0.

我真的有必要这样做吗?

@Injectable ExtFooService extends FooService {

    constructor(private _extBar:BarService){
        super(_extBar);
    }
}

您应该从派生的 class 中的参数 _bar 中删除 privateprivate 是声明一个与构造函数参数同名的字段并使用参数值初始化它的简写形式。由于基 class 已经声明了该字段,因此不需要在派生 class:

中重新声明它
@Injectable ExtFooService extends FooService {

    constructor(_bar:BarService){
        super(_bar);
    }
}