Skip to content

Commit 73bc1d9

Browse files
committed
fix(material-experimental/mdc-form-field): make sure fonts are loaded before calculating notch width
1 parent e436479 commit 73bc1d9

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/material-experimental/mdc-form-field/form-field.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import {MatFormFieldLineRipple} from './directives/line-ripple';
5252
import {MatFormFieldNotchedOutline} from './directives/notched-outline';
5353
import {MAT_PREFIX, MatPrefix} from './directives/prefix';
5454
import {MAT_SUFFIX, MatSuffix} from './directives/suffix';
55+
import {DOCUMENT} from '@angular/common';
5556

5657
/** Type for the available floatLabel values. */
5758
export type FloatLabelType = 'always' | 'auto';
@@ -308,7 +309,8 @@ export class MatFormField implements AfterViewInit, OnDestroy, AfterContentCheck
308309
private _platform: Platform,
309310
@Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS)
310311
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) {
312314
if (_defaults && _defaults.appearance) {
313315
this.appearance = _defaults.appearance;
314316
} else if (_defaults && _defaults.hideRequiredMarker) {
@@ -340,7 +342,13 @@ export class MatFormField implements AfterViewInit, OnDestroy, AfterContentCheck
340342
this._updateFocusState();
341343
// Initial notch width update. This is needed in case the text-field label floats
342344
// 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+
}
344352
// Enable animations now. This ensures we don't animate on initial render.
345353
this._subscriptAnimationState = 'enter';
346354
// Because the above changes a value used in the template after it was checked, we need

0 commit comments

Comments
 (0)