Description
🐞 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