扩展已注入依赖项的服务基础

时间:2016-11-15 10:21:58

标签: angular dependency-injection

我已将我的功能分为ServiceBase,它执行基本操作,以及具有特定功能的实际服务。 ServiceBase需要使用一些常用服务,而特定服务需要使用其特定服务。

所以我有ServiceBase:

export class ServiceBase {
  constructor(private commonService: CommonService){}
}

现在我遇到了问题,因为我需要扩展ServiceBase并注入其他一些服务。我试过了:

@Injectable()
export class MyService extends ServiceBase {
  constructor(private commonService: CommonService, private dedicatedService: DedicatedService) {
    super(commonService)
  }
}

但是我收到错误,我覆盖了commonService的定义。

另一方面,以下内容无法编译,因为我需要使用commonService调用super:

@Injectable()
export class MyService extends ServiceBase {
  constructor(private dedicatedService: DedicatedService) {
    super()
  }
}

如何纠正这种情况下的句柄?

1 个答案:

答案 0 :(得分:1)

尝试删除child中commonService上的“private”,并在parent protected中使commonService。所以它看起来像:

export class ServiceBase {
  constructor(protected commonService: CommonService){}
}

@Injectable()
export class MyService extends ServiceBase {
  constructor(commonService: CommonService, private dedicatedService: DedicatedService) {
    super(commonService)
  }
}

你仍然可以通过this.commonService在子类中使用commonService。