8000 Angular Non AOT compiler doesn't emit class decorators in specific cases · Issue #39574 · angular/angular · GitHub
[go: up one dir, main page]

Skip to content
Angular Non AOT compiler doesn't emit class decorators in specific cases #39574
Closed
@ratoaq2

Description

@ratoaq2

🐞 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3An issue that is relevant to core functions, but does not impede progress. Important, but not urgentarea: compilerIssues related to `ngc`, Angular's template compilerstate: has PR

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0