diff --git a/src/compiler/compile/render_dom/wrappers/Slot.ts b/src/compiler/compile/render_dom/wrappers/Slot.ts index 83d7efa5e9..4dd23277fb 100644 --- a/src/compiler/compile/render_dom/wrappers/Slot.ts +++ b/src/compiler/compile/render_dom/wrappers/Slot.ts @@ -160,8 +160,14 @@ export default class SlotWrapper extends Wrapper { `@transition_out(${slot}, #local);` ); - let update_conditions = [...this.dependencies].map(name => `changed.${name}`).join(' || '); - if (this.dependencies.size > 1) update_conditions = `(${update_conditions})`; + const dynamic_dependencies = Array.from(this.dependencies).filter(name => { + if (name === '$$scope') return true; + const variable = renderer.component.var_lookup.get(name); + return is_dynamic(variable); + }); + + let update_conditions = dynamic_dependencies.map(name => `changed.${name}`).join(' || '); + if (dynamic_dependencies.length > 1) update_conditions = `(${update_conditions})`; block.builders.update.add_block(deindent` if (${slot} && ${slot}.p && ${update_conditions}) {