我有一个基于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并在那里工作 - 但它们没有自己的构造函数,这是唯一的区别。
有人知道这个问题吗?
你应该在这里做的是创建一个抽象类ApiBaseService,然后在其他Injectable Services中扩展它。永远不应将基本服务标记为可注入。