装饰器不支持函数调用

zhe*_*aus 9 decorator aot angular

我正在尝试使用-aotoption(ng build -aot)构建应用程序.我有以下错误:

ERROR in Error during template compile of 'MyComponent'
  Function calls are not supported in decorators but 'classLogger' was called in 'cLog'
    'cLog' calls 'classLogger'.
Run Code Online (Sandbox Code Playgroud)

但是,我需要这个调用,我不知道我应该如何更改代码以使其工作.

export function classLogger(_classOptions?) {
   const myLogger = new MyLogger();
   myLogger.options = Object.assign({}, defaultClassOptions, _classOptions);

   return myLogger.loggerCB;
}

// export function clog(options = defaultClassOptions): Function {
export function cLog(options?): Function {
   return loggingEnabled ? classLogger(options) : emptyClassDecorator();
}
Run Code Online (Sandbox Code Playgroud)

PS类装饰器采用必须转移到装饰器补丁回调的选项.

Afs*_*dli -1

我也遇到过这个问题。在我的情况下,我想覆盖 BusyConfig 参数。应用程序可以正常工作ng serve,但是当我想构建用于生产的应用程序时,Function calls are not supported in decorators but ...会发生异常。

我的解决方案如下: ng build --prod --aot=false

在浏览器下载并运行该代码之前的构建阶段,Angular 提前 (AOT) 编译器会将 Angular HTML 和 TypeScript 代码转换为高效的 JavaScript 代码。

ng build --prodng build --prod --aot

  • 你的解决方案并不能解决任何问题。我遇到这个问题特别想使用 AOT。AOT 对于生产至关重要。 (4认同)