Angular 5:装饰器中不支持函数调用

2023-12-29

我正在从 Angular 应用程序构建 PWA,运行时出现以下错误ng build --prod:

ERROR in app\app.module.ts(108,64): Error during template compile of 'AppModule'
Function calls are not supported in decorators but 'Environment' was called in 'environment'
'environment' calls 'Environment'.

但是,这没有意义,因为我添加了export到课堂上,你可以在这里看到:

环境.产品.ts

import { BaseEnvironment } from './base-environment';
import { ProspectBuilderModel } from '../app/models/prospect';

export class Environment extends BaseEnvironment {
  production: boolean = true;
  prospectBuilderModel: ProspectBuilderModel = {
    buildQuote: false,
    buildAcknowledge: false,
    buildOrganizationInfo: false,
    buildFinancialInfo: false,
    buildTradeInfo: false,
    buildPermissiblePurpose: false,
    buildUserSetup: false,
    buildPackageSelection: false,
    buildPaymentOptions: false,
    buildOrderOptions: false,
    buildVerifyOrganizationInfo: false,
    buildDocusignAuthorization: false,
    buildDocusignContract: false
  };
}

export const environment = new Environment();

基础环境.ts

import { ProspectBuilderModel } from '../app/models/prospect';

export abstract class BaseEnvironment {
  abstract production: boolean;
  abstract prospectBuilderModel: ProspectBuilderModel;
}

应用程序模块.ts

...
 ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    FormsModule,
    MultiselectDropdownModule,
    ReactiveFormsModule,
    HttpModule,
    ToastrModule.forRoot(),
    BrowserAnimationsModule,
    NgxMyDatePickerModule.forRoot(),
    PopoverModule.forRoot(),
    ModalModule.forRoot(),
    ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })
  ],
  providers: [
...

有谁知道我可以做什么来解决这个错误?


遇到同样的问题,这里有可能的解决方法(如果您没有动态加载的属性):

1. 作为你的答案,只是反对。

但是您会丢失默认属性和有关“实现”属性的信息。

2.使用静态类:

在这里你失去了“实现”属性,因为抽象静态是不可能 https://github.com/microsoft/TypeScript/issues/14600,但您有类型和默认值。

// default.env.ts
export class BaseEnvironment {
  public production: boolean = true;
  public specialPropToImpl: boolean = true;
}

// your.env.ts
export class Environment extends BaseEnvironment {
  public specialPropToImpl = true;
}

export const environment = Environment;

3.使用默认属性对象、接口和对象赋值:

这里有“要实现”的属性、类型和默认值,但实现起来有点难看。

// default.env.ts
export interface EnvProperties {
  production: boolean;
  specialPropToImpl: boolean;
}

export const defaultEnv = {
  production: true
};

// your.env.ts
export const environment: EnvProperties = {
  ...defaultEnv,
  specialPropToImpl: true
};

4. 环境中多了一个静态变量

简单的解决方案,您保留子类,但每个 env 文件都必须包含它。但由于新的环境文件是通过复制粘贴旧环境文件创建的,因此这是可行的。
根据生产值,您应该手动更改变量值。
不是非常灵活且可维护的解决方案。但很简单。

// your.env.ts
export const enablePwa = true

// app.module.ts
import {environment, enablePwa} from 'env.ts'
//...
ServiceWorkerModule.register('/ngsw-worker.js', { enabled: enablePwa })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 5:装饰器中不支持函数调用 的相关文章

随机推荐

  • 正则表达式匹配 html 标签之外的文本,而不是特定标签之间的文本

    我试图获得一个正则表达式来匹配 html 标签外部和之间的一些单词 而不是标签本身 但我还需要在它们位于 html 标题标签 h1 h2 h3 等 之间时排除它们 这是我尝试过的 bword b gt lt i 实例 https regex
  • 等待多重未来?

    我想运行相同类型的任务 工作线程 但一次不超过一定数量的任务 当任务完成时 其结果是新任务的输入 然后可以启动该新任务 有没有什么好的方法可以在 C 11 中使用异步 未来范例来实现这一点 乍一看 它看起来很简单 您只需使用以下命令生成多个
  • 在 package.json 中使用私有 git 存储库部署 Google App Engine

    我的 package json 依赖于私有 Bitbucket 存储库 my dependency git ssh email protected cdn cgi l email protection something my depend
  • 嵌套在 firebase 集合模型中的集合没有添加功能

    在我的应用程序中 我尝试使用 Firebase 来存储基于骨干框架的实时数据 问题是这样的 我有一个子级别的模型和集合 它们都是通用骨干模型和集合 var Todo Backbone Model extend defaults title
  • 使用 autofac 解析方法内部类的实例

    使用下面的 PipelineX 类 是否有任何方法可以解析应用于管道的过滤器 而无需注入 autofac 容器并调用 container Resolve public class PipelineX
  • AWS EventBridge API 目标无法连接到 EC2 私有 IP

    我的目标是通过 HTTPS 将消息从 EventBridge 转发到运行 httpd 服务器的 EC2 实例 该实例只有其私有IP 事实证明 EventBridge 的 API 目标及其目标和连接与外部 IP 配合得很好 但私有 IP 没有
  • 未找到工作职能。尝试公开您的工作类别和方法

    首先 我查看了其他具有相同错误消息的 SO 帖子 但似乎没有一个帖子能解决我的问题 我尝试了很多排列和选择 我的函数构建良好 但无法在 CLI 中运行 我收到以下神秘错误 MSFT 文档似乎也没有给出答案 未找到工作职能 尝试公开您的工作类
  • WPF 文本框边框何时被选中?

    我想让 WPF 文本框具有深蓝色边框且厚度等于 1 即使选择了文本框 我也想让 WPF 具有此边框 深蓝色 厚度设置为 1 我尝试通过以下代码完成此任务 然而 它根本不起作用 有什么想法或提示吗 任何帮助将不胜感激
  • Django-注册设置无需密码

    我正在尝试创建一个网站 人们只在其中输入电子邮件地址 然后使用 cookie 等登录 稍后 我会要求他们提供密码和姓名 但不会使用用户名 我正在尝试使用 django registraition 来执行此操作 但出现错误并且遇到一些问题 首
  • Ruby on Rails CSV 用“”代替实际引号

    我正在尝试生成 CSV 文件 除了空白字段之外一切都很好 我不太确定是否有 quot quot 而不是实际的报价 我提供了用于生成文件和一些输出的代码
  • 处理用户输入中从右到左/从左到右覆盖字符

    我需要将用户输入嵌入到字符串中 例如 发送了一条消息 如果用户输入包含方向性覆盖字符之一 U 202D 或 U 202E 就会出现问题 如果 包含 RLO 字符 则显示的字符串将变为 发送了消息 我的问题是如何最好地处理这个问题 RLO 和
  • EF 迁移 - 数据库中已有一个名为 '' 的对象

    我在向数据库添加新表时遇到问题 这些是我在尝试添加新迁移时输入的命令 Add Migration AdminSett 脚手架迁移 AdminSett 设计者代码 迁移文件包含当前 Code First 模型的快照 此快照用于计算模型的更改
  • 指令内部模板中的 ng-click 未提供该功能

    ng click不提供警报 单击指令的内部模板时 不会显示警报框 小提琴链接在这里 http jsfiddle net NNDHX http jsfiddle net NNDhX 你的指令有它自己的隔离范围 所以函数 hi 应该在指令的范围
  • 为 Android 流媒体创建视频

    这是我为创建在 Android 上播放的视频所做的搜索的答案 虽然android支持mp4流媒体但并不容易 我根据我的经验推断出的简单步骤是 1 首先使用超级编码器对视频进行编码 参数是 A 顶级参数 a mp4作为容器 b mpeg 4
  • Java正则表达式字符类中的非法转义字符

    我试图确定传递到我的 Expressions 类中的表达式是否有运算符 任何一个 分别用于加 减 乘 除和指数 这段代码有什么问题 private static boolean hasOperator String expression r
  • 为什么编译器资源管理器上的 Visual Studio 忽略异常模型设置?

    当我尝试使用 EHs标记在编译器资源管理器测试用例 https godbolt org z Md2g7J 启用 异常通过extern C 函数 VC 19 22 似乎忽略了它 因为它仍然踢出 C5039 并且实际上没有更改代码 我缺少什么
  • 如何轻松打印ascii-art文本? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个转储大量输出的程序 并且我希望其中一些输出能够真正脱颖而出 一种方法可能是使用 ascii art 渲染重要文本 like 这
  • VS 2017 中缺少 ASP.NET Core 2 模板

    I m using VS 2017 Community Edition I ve installed NET Core 2 SDK from here 当我跑步时dotnet version我收到如下回复 但我看不到ASP NET Core
  • 为什么每次创建新视图模型时不调用视图构造函数?

    我正在将 WPF 与模型 视图 视图模型模式一起使用 我有一个 ResultsView 和 ResultsViewModel 它们的连接方式如下
  • Angular 5:装饰器中不支持函数调用

    我正在从 Angular 应用程序构建 PWA 运行时出现以下错误ng build prod ERROR in app app module ts 108 64 Error during template compile of AppMod