diff --git a/src/material-experimental/mdc-select/select.html b/src/material-experimental/mdc-select/select.html
index ec8d4f773f4f..5cec29e80193 100644
--- a/src/material-experimental/mdc-select/select.html
+++ b/src/material-experimental/mdc-select/select.html
@@ -14,9 +14,9 @@
#fallbackOverlayOrigin="cdkOverlayOrigin"
#trigger>
- {{placeholder || '\u00A0'}}
+ {{placeholder}}
- {{triggerValue || '\u00A0'}}
+ {{triggerValue}}
diff --git a/src/material-experimental/mdc-select/select.scss b/src/material-experimental/mdc-select/select.scss
index f414c74951ff..2b222c1bbf58 100644
--- a/src/material-experimental/mdc-select/select.scss
+++ b/src/material-experimental/mdc-select/select.scss
@@ -144,3 +144,12 @@ $scale: 0.75 !default;
}
}
}
+
+// Used to prevent inline elements from collapsing if their text bindings
+// become empty. This is preferrable to inserting a blank space, because the
+// space can be read out by screen readers (see #21725).
+.mat-mdc-select-min-line:empty::before {
+ content: ' ';
+ white-space: pre;
+ width: 1px;
+}
diff --git a/src/material/select/select.html b/src/material/select/select.html
index a0c66b30ac8d..196aa483ccef 100644
--- a/src/material/select/select.html
+++ b/src/material/select/select.html
@@ -14,9 +14,9 @@
#origin="cdkOverlayOrigin"
#trigger>
- {{placeholder || '\u00A0'}}
+ {{placeholder}}
- {{triggerValue || '\u00A0'}}
+ {{triggerValue}}
diff --git a/src/material/select/select.scss b/src/material/select/select.scss
index d5cd1f6e937b..453580221133 100644
--- a/src/material/select/select.scss
+++ b/src/material/select/select.scss
@@ -147,3 +147,12 @@ $mat-select-placeholder-arrow-space: 2 * ($mat-select-arrow-size + $mat-select-a
display: block;
}
}
+
+// Used to prevent inline elements from collapsing if their text bindings
+// become empty. This is preferrable to inserting a blank space, because the
+// space can be read out by screen readers (see #21725).
+.mat-select-min-line:empty::before {
+ content: ' ';
+ white-space: pre;
+ width: 1px;
+}