diff --git a/src/compiler/transformers/component-lazy/lazy-constructor.ts b/src/compiler/transformers/component-lazy/lazy-constructor.ts index 242fc01b702..96a33f4cbdf 100644 --- a/src/compiler/transformers/component-lazy/lazy-constructor.ts +++ b/src/compiler/transformers/component-lazy/lazy-constructor.ts @@ -14,8 +14,8 @@ export const updateLazyComponentConstructor = (classMembers: ts.ClassElement[], const body = ts.updateBlock(cstrMethod.body, [ registerInstanceStatement(moduleFile), - ...cstrMethod.body.statements, ...addCreateEvents(moduleFile, cmp), + ...cstrMethod.body.statements, ...addLegacyProps(moduleFile, cmp), ]); diff --git a/src/compiler/transformers/component-native/native-constructor.ts b/src/compiler/transformers/component-native/native-constructor.ts index e0ef579039d..87621c37c45 100644 --- a/src/compiler/transformers/component-native/native-constructor.ts +++ b/src/compiler/transformers/component-native/native-constructor.ts @@ -14,7 +14,7 @@ export const updateNativeConstructor = (classMembers: ts.ClassElement[], moduleF // add to the existing constructor() const cstrMethod = classMembers[cstrMethodIndex] as ts.ConstructorDeclaration; - let statements: ts.Statement[] = [...nativeInit(moduleFile, cmp), ...cstrMethod.body.statements, ...addCreateEvents(moduleFile, cmp), ...addLegacyProps(moduleFile, cmp)]; + let statements: ts.Statement[] = [...nativeInit(moduleFile, cmp), ...addCreateEvents(moduleFile, cmp), ...cstrMethod.body.statements, ...addLegacyProps(moduleFile, cmp)]; if (ensureSuper) { const hasSuper = cstrMethod.body.statements.some(s => s.kind === ts.SyntaxKind.SuperKeyword); diff --git a/src/runtime/test/event.spec.tsx b/src/runtime/test/event.spec.tsx index f782abb376c..35a86641608 100644 --- a/src/runtime/test/event.spec.tsx +++ b/src/runtime/test/event.spec.tsx @@ -58,6 +58,25 @@ describe('event', () => { `); }); + it('should set Event in constructor before users constructor statements', async () => { + @Component({ tag: 'cmp-a' }) + class CmpA { + constructor() { + this.style.emit(); + } + @Event() style: EventEmitter; + } + + const { root } = await newSpecPage({ + components: [CmpA], + html: ``, + }); + + expect(root).toEqualHtml(` + + `); + }); + it('should have custom name', async () => { @Component({ tag: 'cmp-a' }) class CmpA {