情况
我正在将一个AngularJS(即Angular 1.6)应用程序升级到Angular(即Angular 4.1.3)。我选择了增量升级,因此当前同时引导和运行着AngularJS和Angular。到目前为止一切顺利,但是:我的一个AngularJS服务应该被重写为Angular服务,该服务依赖于众所周知的$translate
服务,后者是第三方AngularJS模块pascalprecht.translate的一部分。换句话说,$translate
服务被注入到应该成为Angular(即Angular 4)服务的MyService
中。
MyService
(精简版)看起来像这样:
import { Injectable } from '@angular/core';
@Injectable()
export class MyService {
// Here comes the injection (how to do it?).
constructor(private $translate: $translate) {
}
foo() {
// Use the service
this.$translate('HELLO_WORLD');
}
}
它位于
MyModule
中:import { NgModule } from '@angular/core';
import { MyService } from './my.service';
@NgModule({
providers: [
MyService
]
})
export class MyModule {
}
问题
现在,当MyService
位于Angular模块中,而$translate
是第三方AngularJS模块的一部分时,我如何将$translate
注入到MyService
中?
如果AngularJS服务位于同一模块中(或者至少该模块是我的解决方案的一部分),我知道如何将AngularJS服务注入到Angular服务中。这在官方文档中有说明。是否有任何方法来处理第三方服务?我需要在MyModule
的提供程序中注册该服务吗?
import { NgModule } from '@angular/core';
import { MyService } from './my.service';
// How this line should look line then?
import { $translate } from 'node_modules/angular-translate/...';
@NgModule({
providers: [
MyService,
$translate
]
})
export class MyModule {
}
还是我在试图实现不可能的任务吗?