В настоящее время я занимаюсь разработкой приложения Angular 6 и через некоторое время, когда я пытался создать сборку prod
ng build --prod
Я столкнулся с этой ошибкой ...
ERROR in src\app\app.module.ts(26,17): Error during template compile of 'AppModule'
Function expressions are not supported in decorators in 'APP_ROOT_STATE'
'APP_ROOT_STATE' references 'APP_ROOT_STATE'
'APP_ROOT_STATE' contains the error at src\app\app.component.ts(20,16)
Consider changing the function expression into an exported function.
После некоторых исследований у меня есть четкое представление о том, что это за ошибка и как ее исправить, но в то же время я нашел это утверждение в Угловой документации по AOT :
Начиная с версии 5, компилятор автоматически выполняет эту перезапись при создании файла .js.
Что это значит?Я получаю сообщение об ошибке выше, используя последние версии пакетов Angular и / или Angular Cli.
Должен ли я как-то включить это переписывание?Есть надежда на то, что AOT не будет перезаписывать все лямбды в метаданных?
Код, на который ссылается ошибка, такой ...
export const APP_ROOT_STATE = {
name: 'app',
abstract: true,
views : {
header: { component: CoreUiAppHeaderComponent },
footer: { component: CoreUiAppFooterComponent }
},
onEnter: onEnterStateBreadcrumbHelper(new AppBreadcrumbEntryModel('Home', 'default')),
onExit: onExitStateBreadcrumbHelper(),
resolve: [
{
token: '_appInitialization',
deps: [AppBootstrapService],
resolveFn: (bootstrapSvc) => bootstrapSvc.initApplication()
}
]
};
Именно эта строка ...
resolveFn: (bootstrapSvc) => bootstrapSvc.initApplication()
Если я переписываю это как функцию и ссылаюсь на эту функцию, ошибка исчезнет.Как то так ...
bootstrapSvcinitApplicationFunction = function(bootstrapSvc) {
bootstrapSvc.initApplication();
}
...
resolveFn: bootstrapSvcinitApplicationFunction