Использование сервисов в гибридном приложении Angular / AngularJS (ng-upgrade) - PullRequest
0 голосов
/ 30 апреля 2018

В настоящее время создаю уменьшенную версию приложения для плунжера, чтобы я мог ПОКАЗАТЬ вам свою проблему, но в случае, если у кого-нибудь есть какие-то подсказки, я постараюсь описать мою проблему первый.

Я использую 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.

На одном из функциональных модулей я хочу преобразовать сервис. Теперь это встроенный в 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?

...