Ошибка Angular 6 при импорте функционального модуля - вызовы функций не поддерживаются в декораторах - PullRequest
0 голосов
/ 18 декабря 2018

Я новичок в Angular 6, раньше работал в AngularJS 1.x.В настоящее время я пытаюсь импортировать пользовательский модуль в мое основное приложение, и у меня возникла ошибка, которая, по моему мнению, вызывает недопонимание.Я видел пару других SO-постов, предназначенных для этого, и я думаю, что это какая-то проблема с компиляцией AOT в Angular, но я не уверен, как это исправить.

По сути, у меня есть двамодули в той же «корневой» директории.Один из этих модулей - www - мое основное приложение.Другой - сервисы - это пользовательское приложение для обработки данных сервисов.Я делаю это таким образом, чтобы я мог разделить модуль «сервисы» между www и другими будущими приложениями / модулями.

Структура приложения

|- www/
|-- app/
|--- src/
|---- app.module.ts
|- services/
|-- app/
|--- src/
|---- services.module.ts

Www Модуль

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { WwwComponent } from './www.component';
import { ServicesModule | from './../../../services/app/src/services.module.ts';

@NgModule({
  declarations: [
    WwwComponent
  ],
  imports: [
    BrowserModule,
    ServicesModule
  ],
  providers: [],
  bootstrap: [WwwComponent]
})
export class WwwModule { }

Сервисный модуль

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, ModuleWithProviders } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { RouterModule } from '@angular/router';

import { ServicesComponent } from './services.component';

import { AuthService } from '../auth.service';
import { HttpService } from '../http.service';
import { TemplateService } from '../template/template.service';
import { ModalService } from '../modal/modal.service';

@NgModule({
    declarations: [
        ServicesComponent
    ],
    exports: [
        ServicesComponent
    ],
    imports: [
        BrowserModule,
        RouterModule,
        HttpClientModule
    ],
    providers: [
        AuthService,
        HttpService,
        TemplateService,
        ModalService
    ],
    bootstrap: [ServicesComponent]
})
export class ServicesModule {}

Ошибки, которые я получаю при запуске ng build :

  1. Ошибка при ошибке при компиляции шаблона 'WwwModule'
  2. Вызовы функций не поддерживаются в декораторах, но был вызван 'ServicesModule'.
  3. Невозможно переопределить block-переменная области действия 'ngDevMode'.

Кто-нибудь видит, что я делаю неправильно, чтобы включить в свой Angular другой модуль Angular?

Спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

Как оказалось, это проблема с модулями и файловой структурой для использования общих / пользовательских модулей.По сути, проблема заключалась в том, что я укоренял два отдельных модуля ngModule в одной корневой директории, каждый со своими / node_modules / зависимости.Основным решением является группирование двух модулей NgModules в одном родительском каталоге, чтобы они могли «делиться» зависимостями node_modules.

Поскольку я использую SVN и не хочу извлекать общий модуль в проекте / приложениия скопировал src / из Сервисного модуля в папку www / app / src / и включил оттуда сервисный модуль.

Изменена структура папок

|- www/
|-- app/
|--- src/
|---- app.module.ts
|--- services/
|---- app/
|----- services.module.ts

Изменения в WM AppModule *

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { WwwComponent } from './www.component';
import { ServicesModule | from './../services/app/src/services.module.ts';

@NgModule({
  declarations: [
    WwwComponent
  ],
  imports: [
    BrowserModule,
    ServicesModule
  ],
  providers: [],
  bootstrap: [WwwComponent]
})
export class WwwModule { }

Для справки, эти ссылки помогли мне указать правильное направление:

  1. https://groups.google.com/forum/#!topic/angular/WUdr1ra0WF0
  2. AOT Ссылки на компиляцию и модули

Надеюсь, это поможет кому-то еще!

...