我有一个令人惊讶的问题,因为我将代码从RC5 2迁移到了2.2.0。我将服务注入到其他服务中,如:
constructor(_http:Http,
_cachingServices:CachingServices,
_globalServices:GlobalServices,
_dataServices:DataServices,
_notificationServices:NotificationServices)这在RC5中运行得很好,但是现在2.2.0版本的注入是混合的!以下代码:
// 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);
}给我以下结果:
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"}错误=>服务引用是混合的!我已经找了一段时间了,一直没有回答。
谢谢!
发布于 2016-11-16 10:09:46
天哪!真是个可疑的问题。我的解决方案有几个服务。其中每个引用另一个服务,但没有循环引用。
让我们使用两个服务:translate.services.ts
export class TranslateServices extends BaseServices {
// Constructor
constructor(_http:Http,
_globalServices:GlobalServices,
_cachingServices:CachingServices,
_dataServices:DataServices,
_notificationServices:NotificationServices,
_ipServices:IPServices,
_configurationServices:ConfigurationServices){
}
}和user.services.ts
export class UserServices extends BaseServices {
constructor(_http:Http,
_globalServices:GlobalServices,
_cachingServices:CachingServices,
_dataServices:DataServices,
_notificationServices:NotificationServices,
_ipServices:IPServices,
_cookieServices:CookieServices) {
}
}我们可以看到,translate.services注入configuration.services和user.services注入cookie.services.
在我的示例中,如果首先初始化translate.services,则以下命令:
console.debug("TranslateServices _configurationServices => ",_configurationServices);
console.debug("UserServices _cookieServices => ",_cookieServices);将提供以下输出:
TranslateServices _configurationServices => ConfigurationServices
UserServices _cookieServices => ConfigurationServices如果首先初始化user.services,则相同的命令:
console.debug("TranslateServices _configurationServices => ",_configurationServices);
console.debug("UserServices _cookieServices => ",_cookieServices);将提供以下输出:
TranslateServices _configurationServices => CookieServices
UserServices _cookieServices => CookieServices参数_cookieServices和_configurationServices的位置似乎很重要,即使它们处于两个不同的服务中。
为了处理这一问题,我必须在两家服务机构签署相同的签名:
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) {
}
}这似乎不是正常的行为。我费了很大的劲才找到了解释的开始。希望这个错误能在一个不加限制的版本中得到纠正。
如果有人能给我更多的解释,我想。
https://stackoverflow.com/questions/40619622
复制相似问题