目前正在为 plunker 构建一个精简版的应用程序,以便我可以向您展示我的问题,但如果有人同时有任何提示,我将尝试首先描述我的问题。
我正在使用 ngUpgrade 开始将大型应用程序从 AngularJS 带到 Angular。我有一个使用 Angular 运行的核心应用程序。简而言之,它的设置有点像这样:
@Component({
selector: '[my-app]',
template: `
<app-main></app-main>
`
})
export class AppComponent {};
@NgModule({
imports: [
BrowserModule,
UpgradeModule,
],
bootstrap: [AppComponent],
declarations: [
AppComponent
],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
]
})
export class AppModule {
constructor(public upgrade: UpgradeModule) { }
}
export const Ng1AppModule = angular.module(
'mainApp',
[
'feature.one'
]
);
platformBrowserDynamic().bootstrapModule(AppModule).then(ref => {
ref.instance.upgrade.bootstrap(document.body, [Ng1AppModule.name], {});
});
它成功地引导自己并运行一个根组件,该组件基本上加载了旧的 AngularJS 应用程序。到目前为止没有大问题。
AngularJS 应用程序依赖于许多自定义功能模块,我现在需要将它们转换为 Angular。
在我想转换服务的功能模块之一上。它现在是一个内置在 typescript 中的 Angular @Injectable,它被分配给 AngularJS 模块,如下所示:
export const Ng1FeatureModule = angular
.module('feature.one', ['ngCookies'])
.service('UpgradedService', downgradeInjectable(UpgradedService) as any);
该服务需要依赖于我尚未转换的服务。例子:
@Injectable()
export class UpgradedService{
public var1: string;
constructor(private nonconvertedNG1Service: NonconvertedNG1Service) {
this.var1 = nonconvertedNG1Service.get();
}
public getVar1() {
return this.var1;
}
}
我需要如何进行设置,以便我的示例应用程序使用“UpgradedService”并且 UpgradedService 能够使用 NonconvertedNG1Service?