首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角2.2.0注入从RC5 =>开关注入迁移而来

角2.2.0注入从RC5 =>开关注入迁移而来
EN

Stack Overflow用户
提问于 2016-11-15 21:01:59
回答 1查看 55关注 0票数 1

我有一个令人惊讶的问题,因为我将代码从RC5 2迁移到了2.2.0。我将服务注入到其他服务中,如:

代码语言:javascript
复制
  constructor(_http:Http,
          _cachingServices:CachingServices,
          _globalServices:GlobalServices,
          _dataServices:DataServices,
          _notificationServices:NotificationServices)

这在RC5中运行得很好,但是现在2.2.0版本的注入是混合的!以下代码:

代码语言:javascript
复制
  // Constructor
  constructor(_http:Http,
          _cachingServices:CachingServices,
          _globalServices:GlobalServices,
          _dataServices:DataServices,
          _notificationServices:NotificationServices){

console.debug(this.className + " param globalServices  => ",_globalServices);
console.debug(this.className + " param cachingServices => ",_cachingServices);
console.debug(this.className + " param dataServices => ",_dataServices);
console.debug(this.className + " param notificationServices => ",_notificationServices);

 }

给我以下结果:

代码语言:javascript
复制
  TranslateServices param globalServices  =>  DataServices {connectionStrings: Object, mode: "dev", magicServices: MagicServices, apiURL: "http://127.0.0.1/api.php", baseURL: "http://localhost:3000"}
  TranslateServices param cachingServices =>  CachingServices {expiration: EventEmitter, cacheduration: 400000}
  TranslateServices param dataServices =>  NotificationServices {notification: EventEmitter, types: Object, notification_one_like_per_day: "notification_one_like_per_day", notification_one_message_per_day: "notification_one_message_per_day", notification_thanks_for_message: "notification_thanks_for_message"…}
  TranslateServices param notificationServices =>  GlobalServices {mode: "dev", apiURL: "http://127.0.0.1/api.php", baseURL: "http://localhost:3000"}

错误=>服务引用是混合的!我已经找了一段时间了,一直没有回答。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-16 10:09:46

天哪!真是个可疑的问题。我的解决方案有几个服务。其中每个引用另一个服务,但没有循环引用

让我们使用两个服务:translate.services.ts

代码语言:javascript
复制
  export class TranslateServices extends BaseServices {

  // Constructor
  constructor(_http:Http,
              _globalServices:GlobalServices,
              _cachingServices:CachingServices,
              _dataServices:DataServices,
              _notificationServices:NotificationServices,
              _ipServices:IPServices,
              _configurationServices:ConfigurationServices){
  }
}

user.services.ts

代码语言:javascript
复制
export class UserServices extends BaseServices {

  constructor(_http:Http,
              _globalServices:GlobalServices,
              _cachingServices:CachingServices,
              _dataServices:DataServices,
              _notificationServices:NotificationServices,
              _ipServices:IPServices,
              _cookieServices:CookieServices) {
  }
}

我们可以看到,translate.services注入configuration.servicesuser.services注入cookie.services.

在我的示例中,如果首先初始化translate.services,则以下命令:

代码语言:javascript
复制
    console.debug("TranslateServices _configurationServices => ",_configurationServices);
    console.debug("UserServices _cookieServices => ",_cookieServices);

将提供以下输出:

代码语言:javascript
复制
TranslateServices _configurationServices => ConfigurationServices
UserServices _cookieServices => ConfigurationServices

如果首先初始化user.services,则相同的命令:

代码语言:javascript
复制
    console.debug("TranslateServices _configurationServices => ",_configurationServices);
    console.debug("UserServices _cookieServices => ",_cookieServices);

将提供以下输出:

代码语言:javascript
复制
TranslateServices _configurationServices => CookieServices
UserServices _cookieServices => CookieServices

参数_cookieServices_configurationServices的位置似乎很重要,即使它们处于两个不同的服务中。

为了处理这一问题,我必须在两家服务机构签署相同的签名:

代码语言:javascript
复制
    export class TranslateServices extends BaseServices {

  constructor(_http:Http,
              _globalServices:GlobalServices,
              _cachingServices:CachingServices,
              _dataServices:DataServices,
              _notificationServices:NotificationServices,
              _ipServices:IPServices,
              _configurationServices:ConfigurationServices
              _cookieServices:CookieServices) {
  }
}

export class UserServices extends BaseServices {

  constructor(_http:Http,
              _globalServices:GlobalServices,
              _cachingServices:CachingServices,
              _dataServices:DataServices,
              _notificationServices:NotificationServices,
              _ipServices:IPServices,
              _configurationServices:ConfigurationServices
              _cookieServices:CookieServices) {
  }
}

这似乎不是正常的行为。我费了很大的劲才找到了解释的开始。希望这个错误能在一个不加限制的版本中得到纠正。

如果有人能给我更多的解释,我想。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40619622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档