我正在尝试扩展一个类并用另一个扩展上述依赖项的类替换依赖项。但是,当我将注入的http实例传递给超级调用时,我收到此错误。
“HttpClient”类型的参数不能赋值给参数 'HttpClient'类型。类型具有单独的a声明 私有财产'处理程序''。
这是我想要使用的提供程序而不是AuthenticationService,因为它是使用MobileAppConfig依赖项而不是AppConfig注入的。
@Injectable()
export class MobileAuthenticationService extends AuthenticationService {
constructor(appConfig: MobileAppConfig, http: HttpClient, cookieService: CookieService, userSession: UserSession, someService: SomeService){
super(appConfig, http, cookieService, userSession, someService);
}
}
这是我的MobileAppConfig类。
@Injectable()
export class MobileAppConfig extends AppConfig{
constructor(private platform: Platform) {
super();
this.baseUrl = Servers.STAGE.url;
}
set baseURL(server: string) {
switch (server) {
case Servers.PROD.key:
this.baseUrl = Servers.PROD.url;
break;
case Servers.STAGE.key:
this.baseUrl = Servers.STAGE.url;
break;
case Servers.QA.key:
this.baseUrl = Servers.QA.url;
break;
default:
this.baseUrl = Servers.DEV.url;
break;
}
}
}
我想提一下,AuthenticationService是一个本地依赖模块,并且具有angular / common 5.1.1,与我正在处理的项目相同。
如果还有另一种方法可以实现我想要实现的目标,那么我也欢迎这些建议。
刚做了一个最低限度的测试,看看我是否可以在另一个场景中产生错误而我无法做到。这里没有错误。
@Injectable()
export class HttpInjectedClass {
httpClient: HttpClient;
constructor(httpClient: HttpClient) {
this.httpClient = httpClient;
}
}
@Injectable()
export class MobileAuthenticationService extends HttpInjectedClass {
constructor(http: HttpClient) {
super(http);
}
}