Angular静态注入器提供程序错误-但仅当扩展另一个注入器时

时间:2019-02-18 09:58:00

标签: angular

我有一个基于API的服务,看起来像这样

@Injectable()
export class ApiBaseService {
    constructor(
        private http: HttpClient,
        _configuration: ConfigurationService
    ) {
        this.apiUrl = _configuration.serverWithApiUrl;
    }
}

我正在尝试将其扩展为类似于以下内容的

@Injectable()
export class StaticTranslationService extends ApiBaseService {

  private staticTranslations = new ReplaySubject(1);

  constructor(
     http: HttpClient,
      _configuration: ConfigurationService
  ) {
    super(http, _configuration);
    this.staticTranslations.next(json);
  }
}

但我收到此错误:

StaticInjectorError(AppModule)[StaticTranslationService -> ConfigurationService]: 
  StaticInjectorError(Platform: core)[StaticTranslationService -> ConfigurationService]: 
    NullInjectorError: No provider for ConfigurationService!

但是,我的app.module提供程序如下:

providers: [
    ConfigurationService,
    ApiBaseService,
    StaticTranslationService
  ]

ConfigurationService可以注入到其他服务中,这些服务也可以扩展ApiBaseService并在那里工作-但它们没有自己的构造函数,这是唯一的区别。

请问有人知道这里的问题吗?

1 个答案:

答案 0 :(得分:0)

您应该在这里创建一个抽象类ApiBaseService,然后将其扩展到其他Injectable Services中。基本服务不应标记为可注入。