@@ -53,7 +53,7 @@ export class AriaDescriber {
53
53
* message element.
54
54
*/
55
55
describe ( hostElement : Element , message : string ) {
56
- if ( ! this . _platform . isBrowser || ! ` ${ message } ` . trim ( ) ) { return ; }
56
+ if ( ! this . _platform . isBrowser || ! message . trim ( ) ) { return ; }
57
57
58
58
if ( ! messageRegistry . has ( message ) ) {
59
59
createMessageElement ( message ) ;
@@ -66,19 +66,20 @@ export class AriaDescriber {
66
66
67
67
/** Removes the host element's aria-describedby reference to the message element. */
68
68
removeDescription ( hostElement : Element , message : string ) {
69
- if ( ! this . _platform . isBrowser || ! ` ${ message } ` . trim ( ) ) {
69
+ if ( ! this . _platform . isBrowser || ! message . trim ( ) ) {
70
70
return ;
71
71
}
72
72
73
73
if ( isElementDescribedByMessage ( hostElement , message ) ) {
74
74
removeMessageReference ( hostElement , message ) ;
75
75
}
76
76
77
- if ( messageRegistry . get ( message ) ! . referenceCount === 0 ) {
77
+ const registeredMessage = messageRegistry . get ( message ) ;
78
+ if ( registeredMessage && registeredMessage . referenceCount === 0 ) {
78
79
deleteMessageElement ( message ) ;
79
80
}
80
81
81
- if ( messagesContainer ! . childNodes . length === 0 ) {
82
+ if ( messagesContainer && messagesContainer . childNodes . length === 0 ) {
82
83
deleteMessagesContainer ( ) ;
83
84
}
84
85
}
@@ -118,8 +119,11 @@ function createMessageElement(message: string) {
118
119
119
120
/** Deletes the message element from the global messages container. */
120
121
function deleteMessageElement ( message : string ) {
121
- const messageElement = messageRegistry . get ( message ) ! . messageElement ;
122
- messagesContainer ! . removeChild ( messageElement ) ;
122
+ const registeredMessage = messageRegistry . get ( message ) ;
123
+ const messageElement = registeredMessage && registeredMessage . messageElement ;
124
+ if ( messagesContainer && messageElement ) {
125
+ messagesContainer . removeChild ( messageElement ) ;
126
+ }
123
127
messageRegistry . delete ( message ) ;
124
128
}
125
129
@@ -174,11 +178,12 @@ function removeMessageReference(element: Element, message: string) {
174
178
}
175
179
176
180
/** Returns true if the element has been described by the provided message ID. */
177
- function isElementDescribedByMessage ( element : Element , message : string ) {
181
+ function isElementDescribedByMessage ( element : Element , message : string ) : boolean {
178
182
const referenceIds = getAriaReferenceIds ( element , 'aria-describedby' ) ;
179
- const messageId = messageRegistry . get ( message ) ! . messageElement . id ;
183
+ const registeredMessage = messageRegistry . get ( message ) ;
184
+ const messageId = registeredMessage && registeredMessage . messageElement . id ;
180
185
181
- return referenceIds . indexOf ( messageId ) != - 1 ;
186
+ return ! ! messageId && referenceIds . indexOf ( messageId ) != - 1 ;
182
187
}
183
188
184
189
/** @docs -private */
0 commit comments