私のAngular 2アプリでは、私はお互いに依存する2つのサービスを持っています(サービスAはサービスBの呼び出しメソッド、その逆)。 はここに関連するコードです: app.component.tsで:Angular2:2のサービスはお互いに依存します
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) {}
}
アプリを実行すると、次のエラーにつながります:
EXCEPTION: Cannot resolve all parameters for 'Temp2Service'(undefined). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'Temp2Service' is decorated with Injectable
サービスのいずれかでコンストラクタにコメントすると、アプリはうまく動作します。 私の推測では、2つのサービスの「相互参照」が問題を引き起こしていると考えられます。 ここで何がうまくいかないのか考えていますか? 私のアプローチはすでに間違っていますか?
お寄せいただきありがとうございます!
角度には、Temp2Serviceを構築するためのTempServiceが必要であり、TempServiceを構築するにはTemp2Serviceが必要です。それは鶏と卵の問題です。 3番目のサービスを作成し、3番目のサービスに委任して依存関係を解除します。 –