加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 服务相互依赖

发布时间:2020-12-17 07:06:20 所属栏目:安全 来源:网络整理
导读:在我的Angular 2应用程序中,我有两个相互依赖的服务(服务A来自服务B的调用方法,反之亦然). 以下是相关代码: app.component.ts: import {Component} from 'angular2/core';import {TempService} from '../services/tmp';import {Temp2Service} from '../ser
在我的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) {}
}

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

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

在其中一个服务中评论构造函数时,应用程序运行正常.所以我的猜测是两个服务的“交叉引用”导致了这个问题.

你知道这里出了什么问题吗?或者我的方法已经错了?

解决方法

这是一种称为循环依赖的.这不是Angular2本身的问题.我所知道的任何语言都不允许这样做.

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

如果您遵循单一责任原则,您将发现您不会进入循环依赖陷阱.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读