【发布时间】:2016-07-22 14:00:38
【问题描述】:
在我的 Angular 2 应用程序中,我有两个相互依赖的服务(服务 A 从服务 B 调用方法,反之亦然)。
以下是相关代码:
app.component.ts:
import {Component} from 'angular2/core';
import {TempService} from '../services/tmp';
import {Temp2Service} from '../services/tmp2';
@Component({
selector: 'my-app',
templateUrl: 'app/app/app.component.html',
providers: [TempService, Temp2Service]
})
export class AppComponent { (...) }
服务 1:
import {Injectable} from 'angular2/core';
import {Temp2Service} from './tmp2';
@Injectable()
export class TempService {
constructor (private _sessionService: Temp2Service) {}
}
服务 2:
import {Injectable} from 'angular2/core';
import {TempService} from './tmp';
@Injectable()
export class Temp2Service {
constructor (private _sessionService: TempService) {}
}
运行应用程序会导致以下错误:
例外:无法解析所有参数 'Temp2Service'(未定义)。确保所有参数都是 用 Inject 装饰或具有有效的类型注释,并且 'Temp2Service' 用 Injectable 装饰
在其中一项服务中注释构造函数时,应用程序运行良好。所以我的猜测是这两个服务的“交叉引用”导致了问题。
您知道这里出了什么问题吗?还是我的方法已经错了?
【问题讨论】:
-
嗯,Angular 需要一个 TempService 来构造一个 Temp2Service,它需要一个 Temp2Service 来构造一个 TempService。这是一个先有鸡还是先有蛋的问题。创建第三个服务,并委托给第三个服务以打破依赖关系。
标签: angular