7
7
*/
8
8
9
9
import {
10
- AfterViewInit ,
11
10
Directive ,
12
11
ElementRef ,
13
12
EventEmitter ,
@@ -39,18 +38,34 @@ import {SharedResizeObserver} from '../resize-observer';
39
38
'[class.mdc-floating-label--float-above]' : 'floating' ,
40
39
} ,
41
40
} )
42
- export class MatFormFieldFloatingLabel implements AfterViewInit , OnDestroy {
41
+ export class MatFormFieldFloatingLabel implements OnDestroy {
43
42
/** Whether the label is floating. */
44
43
@Input ( )
45
44
get floating ( ) {
46
45
return this . _floating ;
47
46
}
48
47
set floating ( value : boolean ) {
49
48
this . _floating = value ;
50
- this . resized . emit ( ) ;
49
+ if ( this . monitorResize ) {
50
+ this . resized . emit ( ) ;
51
+ }
51
52
}
52
53
private _floating = false ;
53
54
55
+ @Input ( )
56
+ get monitorResize ( ) {
57
+ return this . _monitorResize ;
58
+ }
59
+ set monitorResize ( value : boolean ) {
60
+ this . _monitorResize = value ;
61
+ if ( this . _monitorResize ) {
62
+ this . _startResizeObserver ( ) ;
63
+ } else {
64
+ this . _stopResizeObserver ( ) ;
65
+ }
66
+ }
67
+ private _monitorResize = false ;
68
+
54
69
@Output ( ) resized = new EventEmitter < void > ( ) ;
55
70
56
71
private _ngZone = inject ( NgZone ) ;
@@ -61,14 +76,6 @@ export class MatFormFieldFloatingLabel implements AfterViewInit, OnDestroy {
61
76
62
77
constructor ( private _elementRef : ElementRef < HTMLElement > ) { }
63
78
64
- ngAfterViewInit ( ) {
65
- this . _stopResizeObserver = this . _ngZone . runOutsideAngular ( ( ) =>
66
- this . _resizeObserver . observe ( this . _elementRef . nativeElement , ( ) => this . resized . emit ( ) , {
67
- box : 'border-box' ,
68
- } ) ,
69
- ) ;
70
- }
71
-
72
79
ngOnDestroy ( ) {
73
80
this . _stopResizeObserver ( ) ;
74
81
}
@@ -82,6 +89,15 @@ export class MatFormFieldFloatingLabel implements AfterViewInit, OnDestroy {
82
89
get element ( ) : HTMLElement {
83
90
return this . _elementRef . nativeElement ;
84
91
}
92
+
93
+ private _startResizeObserver ( ) {
94
+ this . _stopResizeObserver ( ) ;
95
+ this . _stopResizeObserver = this . _ngZone . runOutsideAngular ( ( ) =>
96
+ this . _resizeObserver . observe ( this . _elementRef . nativeElement , ( ) => this . resized . emit ( ) , {
97
+ box : 'border-box' ,
98
+ } ) ,
99
+ ) ;
100
+ }
85
101
}
86
102
87
103
/**
0 commit comments