Angular2:2服务依赖于彼此

前端之家收集整理的这篇文章主要介绍了Angular2:2服务依赖于彼此前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的Angular 2应用程序中,我有两个依赖于彼此的服务(来自服务B的服务A调用方法,反之亦然). @H_403_1@以下是相关代码: @H_403_1@在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) {}
}

运行应用程序会导致以下错误

EXCEPTION: Cannot resolve all parameters for@H_403_1@ ‘Temp2Service'(undefined). Make sure that all the parameters are@H_403_1@ decorated with Inject or have valid type annotations and that@H_403_1@ ‘Temp2Service’ is decorated with Injectable

当在其中一个服务中注释构造函数时,应用程序运行正常.@H_403_1@所以我猜测这两个服务的“交叉参考”是造成这个问题的.@H_403_1@你有什么想法吗?@H_403_1@还是我的做法已经错了?

感谢您的建议!

这是一个所谓的循环依赖.这不是Angular2本身的一个问题.我不知道任何语言是不允许的.

您将需要重构代码删除此循环依赖关系.您可能需要将其中一项服务分解为新服务.

在你遵循单一的责任原则,你会发现你不会陷入循环依赖陷阱.

猜你在找的Angularjs相关文章