3

目前正在为 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?

4

0 回答 0