diff --git a/addons/web/static/src/js/widgets/domain_selector.js b/addons/web/static/src/js/widgets/domain_selector.js
index 782128994db236fd3b8252c71933c282687c63e6..0619cf613c6413eaf6e904b5464f135aa19b0ba3 100644
--- a/addons/web/static/src/js/widgets/domain_selector.js
+++ b/addons/web/static/src/js/widgets/domain_selector.js
@@ -179,7 +179,16 @@ var DomainTree = DomainNode.extend({
      */
     init: function (parent, model, domain, options) {
         this._super.apply(this, arguments);
-        this._initialize(Domain.prototype.stringToArray(domain));
+        try {
+            domain = Domain.prototype.stringToArray(domain);
+        } catch (err) {
+            // TODO: domain could contain `parent` for example, which is
+            // currently not handled by the DomainSelector
+            this.invalidDomain = true;
+            this.children = [];
+            return;
+        }
+        this._initialize(domain);
     },
     /**
      * @see DomainNode.start
@@ -443,6 +452,16 @@ var DomainSelector = DomainTree.extend({
         domain_changed: "_onDomainChange",
     }),
 
+    start: function () {
+        var self = this;
+        return this._super.apply(this, arguments).then(function () {
+            if (self.invalidDomain) {
+                var msg = _t("This domain is not supported.");
+                self.$el.html(msg);
+            }
+        });
+    },
+
     //--------------------------------------------------------------------------
     // Public
     //--------------------------------------------------------------------------
diff --git a/addons/web/static/tests/widgets/domain_selector_tests.js b/addons/web/static/tests/widgets/domain_selector_tests.js
index 55ddc971642f167deb291bf36daad1d30d361a9c..aca017e831c8a15b6aa799ff523a662f7138b857 100644
--- a/addons/web/static/tests/widgets/domain_selector_tests.js
+++ b/addons/web/static/tests/widgets/domain_selector_tests.js
@@ -194,6 +194,25 @@ QUnit.module('DomainSelector', {
 
         domainSelector.destroy();
     });
+
+    QUnit.test("editing a domain with `parent` key", function (assert) {
+        assert.expect(1);
+
+        var $target = $("#qunit-fixture");
+
+        // Create the domain selector and its mock environment
+        var domainSelector = new DomainSelector(null, "product", "[['name','=',parent.foo]]", {
+            debugMode: true,
+            readonly: false,
+        });
+        testUtils.addMockEnvironment(domainSelector, {data: this.data});
+        domainSelector.appendTo($target);
+
+        assert.strictEqual(domainSelector.$el.text(), "This domain is not supported.",
+            "an error message should be displayed because of the `parent` key");
+
+        domainSelector.destroy();
+    });
 });
 });
 });