Angular 5 Class通过注射扩展了类

时间:2018-03-16 10:03:24

标签: typescript dependency-injection angular5 extends

我创建了这样一个类

@Injectable FooService {

    constructor(private _bar:BarService){

    }
}

并像这样扩展它

@Injectable ExtFooService extends FooService {

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

通过这种方式,我收到以下错误:

  

错误:(12,14)TS2415:类'ExtFooService'错误地扩展了基类'FooService'。类型具有私有属性'_bar'的单独声明。

为什么会这样?

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

  

错误:(21,9)TS2554:预期2个参数,但得到0。

我真的有必要这样做吗?

@Injectable ExtFooService extends FooService {

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

1 个答案:

答案 0 :(得分:6)

您应该从派生类中的参数private中删除_barprivate是用于声明与构造函数参数同名的字段并使用参数值初始化它的简写。由于基类已经声明了该字段,因此无需在派生类中重新声明它:

@Injectable ExtFooService extends FooService {

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