2017-12-31 181 views
7

Tôi đang cố gắng tạo ứng dụng với tùy chọn -aot (ng build -aot). Tôi gặp lỗi sau:Cuộc gọi chức năng không được hỗ trợ trong trang trí

ERROR in Error during template compile of 'MyComponent' 
    Function calls are not supported in decorators but 'classLogger' was called in 'cLog' 
    'cLog' calls 'classLogger'. 

Tuy nhiên, tôi cần cuộc gọi này và tôi không biết làm cách nào để thay đổi mã để làm việc.

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(); 
} 

P.S. Class decorator có các tùy chọn mà phải được chuyển giao cho gọi lại trang trí vá lỗi.

+0

trông giống như @ góc/cli 1.6.8 đã giải quyết được vấn đề ... – zhekaus

Trả lời

0

Tôi cũng đã gặp phải vấn đề này. Trong tình huống của tôi, tôi muốn ghi đè các tham số BusyConfig. Ứng dụng hoạt động đúng với ng serve nhưng khi tôi muốn xây dựng ứng dụng cho sản xuất Function calls are not supported in decorators but ... ngoại lệ xảy ra.

Giải pháp của tôi là như sau: ng build --prod --aot=false

The Angular Ahead-of-Time (AOT) compiler converts your Angular HTML and TypeScript code into efficient JavaScript code during the build phase before the browser downloads and runs that code.

ng build --prod là giống như ng build --prod --aot

+0

giải pháp của bạn không giải quyết bất cứ điều gì. Tôi đã gặp vấn đề đặc biệt là muốn sử dụng AOT. AOT là điều cần thiết cho sản xuất. – zhekaus

Các vấn đề liên quan