错误:无法解析myComponent

时间:2017-10-17 10:47:11

标签: angular typescript

我遇到了这个问题

Error: Can't resolve all parameters for myComponent 

我发现原因是由于特定服务的循环依赖性。

我有common.service.ts,从BaseService扩展,

@Injectable()
export class CommonService extends BaseService {
    constructor(
        private _http: Http,
        private _appConfig: AppConfigService

    ) {
        super(_http, _appConfig);       
}

和BaseService.ts的代码

@Injectable()
export class BaseService {
    constructor(private http: Http, @Inject(AppConfigService) private appConfig: AppConfigService) {
    }
    get(url: string): any {
        return this.http.get(`${this.appConfig.getAPIUrl()}${url}`)
            .map(this.extractData)
            .catch(this.handleErrors);
    }
}

显然,错误是由于我在公共服务内部和基本服务中的其他两次注入http和appconfig服务。

在这种情况下如何避免循环依赖?

1 个答案:

答案 0 :(得分:-1)

尽量不向基类构造函数注入任何内容,而只是将依赖项注入派生类,然后将它们传递给代码中的super()

export class BaseService {
        constructor(http: Http, appConfig: AppConfigService) {
        }
        get(url: string): any {
            return this.http.get(`${this.appConfig.getAPIUrl()}${url}`)
                .map(this.extractData)
                .catch(this.handleErrors);
        }
}

@Injectable()
export class CommonService extends BaseService {
    constructor(
        private _http: Http,
        private _appConfig: AppConfigService

    ) {
     super(_http, _appConfig);       
}