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 {