Angular Static Injector Provider错误 - 但仅在扩展另一个注射器时

问题描述 投票:0回答:1

我有一个基于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并在那里工作 - 但它们没有自己的构造函数,这是唯一的区别。

有人知道这个问题吗?

angular
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.