Ошибка: «Вызовы функций не поддерживаются в декораторах» Сценарий: сервисный метод вызывается из поставщика модуля - PullRequest
0 голосов
/ 13 марта 2019

Когда я создаю свое приложение с aot = true, это вызывает следующую ошибку:

ОШИБКА в app / home / home.module.ts (17,32): ошибка при компиляции шаблона «HomeModule» Вызовы функций не поддерживаются в декораторах, но «HomeRoutesContainer» был вызван в «HOME_ROUTES»

«HOME_ROUTES» ссылается на «RouteService»

'RouteService' вызывает 'HomeRoutesContainer'.

У меня есть метод, вызванный из провайдера HomeModule, который принимает определенный аргумент. Эта строка вызывает ошибку сборки. Вот фрагмент для того же:

@NgModule({
  declarations: [
    HomeComponent
  ],
  providers: [
    RouteService.routeProvider(HOME_ROUTES)
  ],
  imports: [
    ReactiveFormsModule,
    RouterModule,
    CommonComponentModule,
    CommonDirectiveModule,
    CoreModule,
    CommonModule
  ]
});

HOME_ROUTES экспортируется из home.routes.ts

import { RouteService, RoutesContainer, buildRoute } from '@common/core';
import { Routes } from '@angular/router';

import { HomeRoutes } from './home.route-names';
import { HomeComponent } from './home.component';

export class HomeRoutesContainer extends RoutesContainer {
  public root = buildRoute(HomeRoutes.root)
    .default()
    .component(HomeComponent);
}

export const HOME_ROUTES: Routes = RouteService.buildChildRoutes(HomeRoutesContainer, HomeRoutes.moduleEntryName);

Поскольку вышеприведенный оператор выполняет вызов функции, AOT выдает вышеупомянутую ошибку. RouteService является частью библиотеки многократного использования, которая содержит метод routeProvider, который необходимо вызывать из провайдера.

Есть ли способ избавиться от этой ошибки? Я прочитал несколько решений для экспорта функции в модуле, который возвращает HOME_ROUTES. Это не будет работать для меня, так как я должен выполнить вызов функции для routeProvider. Есть ли альтернативный способ использования фабрики и вызова routeProvider метода сервиса и передачи ему HOME_ROUTES?

Информация о версии:

Angular CLI: 6.1.5
Node: 10.15.1
OS: darwin x64
Angular: 6.1.10
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.11.1
@angular-devkit/build-angular     0.11.1
@angular-devkit/build-optimizer   0.11.1
@angular-devkit/build-webpack     0.11.1
@angular-devkit/core              7.1.1
@angular-devkit/schematics        0.7.5
@angular/cdk                      6.4.7
@angular/cli                      6.1.5
@angular/material                 6.4.7
@ngtools/webpack                  7.1.1
@schematics/angular               0.7.5
@schematics/update                0.7.5
rxjs                              6.3.3
typescript                        2.9.2
webpack                           4.23.1
...