diff --git a/src/shared/index.js b/src/shared/index.js
index d55e55c22b..f9d0f91998 100644
--- a/src/shared/index.js
+++ b/src/shared/index.js
@@ -156,9 +156,12 @@ export function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
export function _setDev(newState) {
diff --git a/test/runtime/samples/component-binding-self-destroying/Nested.html b/test/runtime/samples/component-binding-self-destroying/Nested.html
new file mode 100644
index 0000000000..3fb5ca4da3
--- /dev/null
+++ b/test/runtime/samples/component-binding-self-destroying/Nested.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-binding-self-destroying/_config.js b/test/runtime/samples/component-binding-self-destroying/_config.js
new file mode 100644
index 0000000000..e1d61c733a
--- /dev/null
+++ b/test/runtime/samples/component-binding-self-destroying/_config.js
@@ -0,0 +1,29 @@
+export default {
+ solo: true,
+
+ data: {
+ show: true
+ },
+
+ html: `
+
+ `,
+
+ test(assert, component, target, window) {
+ const click = new window.MouseEvent('click');
+
+ target.querySelector('button').dispatchEvent(click);
+
+ assert.equal(component.get('show'), false);
+ assert.htmlEqual(target.innerHTML, `
+
+ `);
+
+ target.querySelector('button').dispatchEvent(click);
+
+ assert.equal(component.get('show'), true);
+ assert.htmlEqual(target.innerHTML, `
+
+ `);
+ }
+};
diff --git a/test/runtime/samples/component-binding-self-destroying/main.html b/test/runtime/samples/component-binding-self-destroying/main.html
new file mode 100644
index 0000000000..74fa144d02
--- /dev/null
+++ b/test/runtime/samples/component-binding-self-destroying/main.html
@@ -0,0 +1,14 @@
+{{#if show}}
+
+{{else}}
+
+{{/if}}
+
+
\ No newline at end of file