@@ -127,7 +127,7 @@ export class AriaDescriber implements OnDestroy {
127
127
messageElement . setAttribute ( 'id' , `${ CDK_DESCRIBEDBY_ID_PREFIX } -${ nextId ++ } ` ) ;
128
128
messageElement . appendChild ( this . _document . createTextNode ( message ) ! ) ;
129
129
130
- if ( ! messagesContainer ) { this . _createMessagesContainer ( ) ; }
130
+ this . _createMessagesContainer ( ) ;
131
131
messagesContainer ! . appendChild ( messageElement ) ;
132
132
133
133
messageRegistry . set ( message , { messageElement, referenceCount : 0 } ) ;
@@ -145,11 +145,23 @@ export class AriaDescriber implements OnDestroy {
145
145
146
146
/** Creates the global container for all aria-describedby messages. */
147
147
private _createMessagesContainer ( ) {
148
- messagesContainer = this . _document . createElement ( 'div' ) ;
149
- messagesContainer . setAttribute ( 'id' , MESSAGES_CONTAINER_ID ) ;
150
- messagesContainer . setAttribute ( 'aria-hidden' , 'true' ) ;
151
- messagesContainer . style . display = 'none' ;
152
- this . _document . body . appendChild ( messagesContainer ) ;
148
+ if ( ! messagesContainer ) {
149
+ const preExistingContainer = this . _document . getElementById ( MESSAGES_CONTAINER_ID ) ;
150
+
151
+ // When going from the server to the client, we may end up in a situation where there's
152
+ // already a container on the page, but we don't have a reference to it. Clear the
153
+ // old container so we don't get duplicates. Doing this, instead of emptying the previous
154
+ // container, should be slightly faster.
155
+ if ( preExistingContainer ) {
156
+ preExistingContainer . parentNode ! . removeChild ( preExistingContainer ) ;
157
+ }
158
+
159
+ messagesContainer = this . _document . createElement ( 'div' ) ;
160
+ messagesContainer . id = MESSAGES_CONTAINER_ID ;
161
+ messagesContainer . setAttribute ( 'aria-hidden' , 'true' ) ;
162
+ messagesContainer . style . display = 'none' ;
163
+ this . _document . body . appendChild ( messagesContainer ) ;
164
+ }
153
165
}
154
166
155
167
/** Deletes the global messages container. */
0 commit comments