diff --git a/src/compiler/compile/render_dom/wrappers/Element/index.ts b/src/compiler/compile/render_dom/wrappers/Element/index.ts
index 20dfed891d..25635ae88c 100644
--- a/src/compiler/compile/render_dom/wrappers/Element/index.ts
+++ b/src/compiler/compile/render_dom/wrappers/Element/index.ts
@@ -669,10 +669,10 @@ export default class ElementWrapper extends Wrapper {
}
block.chunks.mount.push(b`
- if (${data}.multiple) @select_options(${this.var}, ${data}.value);
+ (${data}.multiple ? @select_options : @select_option)(${this.var}, ${data}.value);
`);
block.chunks.update.push(b`
- if (${block.renderer.dirty(Array.from(dependencies))} && ${data}.multiple) @select_options(${this.var}, ${data}.value);
+ if (${block.renderer.dirty(Array.from(dependencies))}) (${data}.multiple ? @select_options : @select_option)(${this.var}, ${data}.value);;
`);
} else if (this.node.name === 'input' && this.attributes.find(attr => attr.node.name === 'value')) {
const type = this.node.get_static_attribute_value('type');
diff --git a/test/runtime/samples/spread-element-input-select/_config.js b/test/runtime/samples/spread-element-input-select/_config.js
new file mode 100644
index 0000000000..7361e6bb31
--- /dev/null
+++ b/test/runtime/samples/spread-element-input-select/_config.js
@@ -0,0 +1,25 @@
+export default {
+ async test({ assert, component, target, window }) {
+ const select = target.querySelector('select');
+ const [option1, option2] = select.childNodes;
+
+ let selections = Array.from(select.selectedOptions);
+ assert.equal(selections.length, 1);
+ assert.ok(!selections.includes(option1));
+ assert.ok(selections.includes(option2));
+
+ component.value = 'Hello';
+
+ selections = Array.from(select.selectedOptions);
+ assert.equal(selections.length, 1);
+ assert.ok(selections.includes(option1));
+ assert.ok(!selections.includes(option2));
+
+ component.spread = { value: 'World' };
+
+ selections = Array.from(select.selectedOptions);
+ assert.equal(selections.length, 1);
+ assert.ok(!selections.includes(option1));
+ assert.ok(selections.includes(option2));
+ }
+};
diff --git a/test/runtime/samples/spread-element-input-select/main.svelte b/test/runtime/samples/spread-element-input-select/main.svelte
new file mode 100644
index 0000000000..41554d794f
--- /dev/null
+++ b/test/runtime/samples/spread-element-input-select/main.svelte
@@ -0,0 +1,9 @@
+
+
+