2017-12-31 224 views
7

Próbuję utworzyć aplikację z opcją -aot(). Mam następujący błąd:Wywołania funkcji nie są obsługiwane w dekoratorze.

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

Jednak muszę to nazywa i nie mam pomysł jak mam się zmienić kod, aby to działało.

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. Dekorator klasy bierze opcje, które muszą zostać przekazane do wywołania poprawki dekoratora.

+0

wygląda @ kątowe/CLI 1.6.8 rozwiązuje problem ... – zhekaus

Odpowiedz

0

Natrafiłem też na ten problem. W mojej sytuacji chcę zastąpić parametry BusyConfig. Aplikacja działa poprawnie z ng serve, ale gdy chcę utworzyć aplikację do produkcji wyjątek występuje Function calls are not supported in decorators but ....

Moje rozwiązanie jest następujące: 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 jest taka sama jak ng build --prod --aot

+0

Twoje rozwiązanie niczego nie rozwiąże. Natknąłem się na problem, szczególnie chcąc skorzystać z AOT. AOT ma zasadnicze znaczenie dla produkcji. – zhekaus