Angular Non AOT compiler doesn't emit class decorators in specific cases
See original GitHub issue🐞 bug report
Affected Package
Angular Non AOT compiler (Jit Mode)
Is this a regression?
Yes, the very same scenario works on Angular 8.x
Description
Given that AOT is disabled ("aot": false
in angular.json)
Given a class that is responsible of configuring “class decorators”, if I decorate a regular typescript class with a decorator generated by that class, the compiled javascript doesn’t emit the class decorator properly.
class DecoratorBuilder {
customClassDecorator<T extends { new (...args: any[]): {} }>(constructor: T) {
console.log('Class Decorated');
return class extends constructor {
myName = 'Decorated Foobar';
};
}
}
export function ClassDecorators() {
return new DecoratorBuilder();
}
@ClassDecorators().customClassDecorator
class MyNonAngularClass {
myName = 'foobar';
}
🔬 Minimal Reproduction
https://github.com/ratoaq2/angular-non-aot-class-decorator
Just start the app: npm install npm start
access http://localhost:4200
You should see: Hello Decorated Foobar!
But you see: Hello foobar!
If you enable "aot": true
, it works correctly. But that’s not an option because I also face this issue in my spec tests where I can’t enable aot
.
🔥 Exception or Error
No exception or error
🌍 Your Environment
Angular Version:
Angular CLI: 10.0.8
Node: 12.18.4
OS: win32 x64
Angular: 10.0.14
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Ivy Workspace: No
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.1000.8
@angular-devkit/build-angular 0.1000.8
@angular-devkit/build-optimizer 0.1000.8
@angular-devkit/build-webpack 0.1000.8
@angular-devkit/core 10.0.8
@angular-devkit/schematics 10.0.8
@angular/cli 10.0.8
@ngtools/webpack 10.0.8
@schematics/angular 10.0.8
@schematics/update 0.1000.8
rxjs 6.5.5
typescript 3.9.7
webpack 4.43.0
Anything else relevant? It doesn’t seem to be a typescript issue
Issue Analytics
- State:
- Created 3 years ago
- Comments:6 (4 by maintainers)
Actually it is caused by a transform (
constructorParametersDownlevelTransform
) that is held in the FW repository. So transferring back!This issue has been automatically locked due to inactivity. Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
This action has been performed automatically by a bot.