Angular Dependency Injection / Super()调用

时间:2018-04-10 20:28:25

标签: javascript angular typescript dependency-injection httpclient

我正在尝试扩展一个类并用另一个扩展上述依赖项的类替换依赖项。但是,当我将注入的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);
    }
}

0 个答案:

没有答案