diff --git a/src/compiler/compile/render_dom/wrappers/Element/EventHandler.ts b/src/compiler/compile/render_dom/wrappers/Element/EventHandler.ts
index 2fa2e9291a..ea2eb4da99 100644
--- a/src/compiler/compile/render_dom/wrappers/Element/EventHandler.ts
+++ b/src/compiler/compile/render_dom/wrappers/Element/EventHandler.ts
@@ -20,7 +20,7 @@ export default class EventHandlerWrapper {
this.parent.renderer.component.partly_hoisted.push(b`
function ${node.handler_name.name}(event) {
- @bubble($$self, event);
+ @bubble.call(this, $$self, event);
}
`);
}
diff --git a/src/runtime/internal/lifecycle.ts b/src/runtime/internal/lifecycle.ts
index 002bd78d24..a84bcc689b 100644
--- a/src/runtime/internal/lifecycle.ts
+++ b/src/runtime/internal/lifecycle.ts
@@ -65,6 +65,7 @@ export function bubble(component, event) {
const callbacks = component.$$.callbacks[event.type];
if (callbacks) {
- callbacks.slice().forEach(fn => fn(event));
+ // @ts-ignore
+ callbacks.slice().forEach(fn => fn.call(this, event));
}
}
diff --git a/test/runtime/samples/component-events-this/Inner.svelte b/test/runtime/samples/component-events-this/Inner.svelte
new file mode 100644
index 0000000000..377aa17c43
--- /dev/null
+++ b/test/runtime/samples/component-events-this/Inner.svelte
@@ -0,0 +1,7 @@
+
+
+