angular - Angular 6 导入功能模块失败——装饰器不支持函数调用
问题描述
我是 Angular 6 的新手,之前曾在 AngularJS 1.x 中工作过。我目前正在尝试将自定义模块导入到我的主应用程序中,并且出现了我认为我误解的错误。我已经看过其他一些关于此的 SO 帖子,我认为这是 AOT 在 Angular 中编译的某种问题,但我不知道如何解决它。
基本上,我在同一个“根”目录中有两个模块。这些模块之一——www——是我的“主要应用程序”。另一个——服务——是用于处理服务数据的自定义应用程序。我这样做是为了在 www 和其他未来的应用程序/模块之间共享“服务”模块。
应用结构
|- www/
|-- app/
|--- src/
|---- app.module.ts
|- services/
|-- app/
|--- src/
|---- services.module.ts
万维网模块
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时出现的错误是:
- 'WwwModule' 模板编译期间出现错误
- 装饰器不支持函数调用,但调用了“ServicesModule”。
- 无法重新声明块范围变量“ngDevMode”。
有没有人看到我在我的 Angular 应用程序中包含另一个 Angular 模块做错了什么?
谢谢!
解决方案
事实证明,这是使用共享/自定义模块的模块和文件结构的问题。本质上,问题是我将两个单独的 ngModule 植根在同一个根目录中,每个都有自己的 /node_modules/ 依赖项。基本的解决方案是将两个 NgModule 分组在同一个父目录下,这样它们就可以“共享” node_modules 依赖项。
由于我使用的是 SVN,并且我不想签出 project/app 目录中的共享模块,因此我将 src/ 从服务模块复制到 www/app/src/ 文件夹中,并从那里包含服务模块.
更改文件夹结构
|- www/
|-- app/
|--- src/
|---- app.module.ts
|--- services/
|---- app/
|----- services.module.ts
对万维网 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 { }
作为参考,这些链接帮助我指出了正确的方向:
希望这对其他人有帮助!
推荐阅读
- c# - 如何在 ASPxGridView 的详细行中检索文本框的值
- javascript - jQuery 在 touchstart 上动态克隆 html 元素,然后接收 touchmove 事件
- c++ - M1 MacBook Pro 和 cmake 的编译错误
- javascript - 修复比较零和负数javascript
- amazon-web-services - 如何限制 AWS S3 预签名 PUT 上传的文件大小?
- python - 如何计算滚动窗口中投资组合的标准差?
- python - scipy solve_ivp 错误:'所需的步长小于数字之间的间距'
- java - 将小部件从活动添加到 Android Studio 中的另一个活动
- python - 为什么它不显示为“float”类型
- java - Visual Studio Code 的问题选项卡文本乱码