我遇到了这个问题
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服务。
在这种情况下如何避免循环依赖?
答案 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);
}