@@ -52,6 +52,7 @@ import {MatFormFieldLineRipple} from './directives/line-ripple';
52
52
import { MatFormFieldNotchedOutline } from './directives/notched-outline' ;
53
53
import { MAT_PREFIX , MatPrefix } from './directives/prefix' ;
54
54
import { MAT_SUFFIX , MatSuffix } from './directives/suffix' ;
55
+ import { DOCUMENT } from '@angular/common' ;
55
56
56
57
/** Type for the available floatLabel values. */
57
58
export type FloatLabelType = 'always' | 'auto' ;
@@ -308,7 +309,8 @@ export class MatFormField implements AfterViewInit, OnDestroy, AfterContentCheck
308
309
private _platform : Platform ,
309
310
@Optional ( ) @Inject ( MAT_FORM_FIELD_DEFAULT_OPTIONS )
310
311
private _defaults ?: MatFormFieldDefaultOptions ,
311
- @Optional ( ) @Inject ( ANIMATION_MODULE_TYPE ) public _animationMode ?: string ) {
312
+ @Optional ( ) @Inject ( ANIMATION_MODULE_TYPE ) public _animationMode ?: string ,
313
+ @Inject ( DOCUMENT ) private _document ?: any ) {
312
314
if ( _defaults && _defaults . appearance ) {
313
315
this . appearance = _defaults . appearance ;
314
316
} else if ( _defaults && _defaults . hideRequiredMarker ) {
@@ -340,7 +342,13 @@ export class MatFormField implements AfterViewInit, OnDestroy, AfterContentCheck
340
342
this . _updateFocusState ( ) ;
341
343
// Initial notch width update. This is needed in case the text-field label floats
342
344
// on initialization, and renders inside of the notched outline.
343
- this . _refreshOutlineNotchWidth ( ) ;
345
+ // Make sure fonts are loaded before calculating the width.
346
+ if ( this . _document . fonts && this . _document . fonts . ready ) {
347
+ this . _document . fonts . ready . then ( ( ) => this . _refreshOutlineNotchWidth ( ) ) ;
348
+ } else {
349
+ // FontFaceSet is not supported in IE
350
+ setTimeout ( ( ) => this . _refreshOutlineNotchWidth ( ) ) ;
351
+ }
344
352
// Enable animations now. This ensures we don't animate on initial render.
345
353
this . _subscriptAnimationState = 'enter' ;
346
354
// Because the above changes a value used in the template after it was checked, we need
0 commit comments