8
8
9
9
import {
10
10
ActiveDescendantKeyManager ,
11
- LiveAnnouncer ,
12
11
addAriaReferencedId ,
12
+ LiveAnnouncer ,
13
13
removeAriaReferencedId ,
14
14
} from '@angular/cdk/a11y' ;
15
15
import { Directionality } from '@angular/cdk/bidi' ;
@@ -34,7 +34,10 @@ import {
34
34
import { ViewportRuler } from '@angular/cdk/scrolling' ;
35
35
import {
36
36
AfterContentInit ,
37
+ afterNextRender ,
38
+ AfterRenderPhase ,
37
39
Attribute ,
40
+ booleanAttribute ,
38
41
ChangeDetectionStrategy ,
39
42
ChangeDetectorRef ,
40
43
Component ,
@@ -45,9 +48,12 @@ import {
45
48
ElementRef ,
46
49
EventEmitter ,
47
50
Inject ,
51
+ inject ,
48
52
InjectionToken ,
53
+ Injector ,
49
54
Input ,
50
55
NgZone ,
56
+ numberAttribute ,
51
57
OnChanges ,
52
58
OnDestroy ,
53
59
OnInit ,
@@ -58,9 +64,6 @@ import {
58
64
SimpleChanges ,
59
65
ViewChild ,
60
66
ViewEncapsulation ,
61
- booleanAttribute ,
62
- inject ,
63
- numberAttribute ,
64
67
} from '@angular/core' ;
65
68
import {
66
69
AbstractControl ,
@@ -71,17 +74,17 @@ import {
71
74
Validators ,
72
75
} from '@angular/forms' ;
73
76
import {
77
+ _countGroupLabelsBeforeOption ,
74
78
_ErrorStateTracker ,
79
+ _getOptionScrollPosition ,
75
80
ErrorStateMatcher ,
81
+ MAT_OPTGROUP ,
82
+ MAT_OPTION_PARENT_COMPONENT ,
76
83
MatOptgroup ,
77
84
MatOption ,
78
85
MatOptionSelectionChange ,
79
- MAT_OPTGROUP ,
80
- MAT_OPTION_PARENT_COMPONENT ,
81
- _countGroupLabelsBeforeOption ,
82
- _getOptionScrollPosition ,
83
86
} from '@angular/material/core' ;
84
- import { MatFormField , MatFormFieldControl , MAT_FORM_FIELD } from '@angular/material/form-field' ;
87
+ import { MAT_FORM_FIELD , MatFormField , MatFormFieldControl } from '@angular/material/form-field' ;
85
88
import { defer , merge , Observable , Subject } from 'rxjs' ;
86
89
import {
87
90
distinctUntilChanged ,
@@ -553,10 +556,18 @@ export class MatSelect
553
556
) ;
554
557
}
555
558
556
- return this . _ngZone . onStable . pipe (
557
- take ( 1 ) ,
558
- switchMap ( ( ) => this . optionSelectionChanges ) ,
559
- ) ;
559
+ return new Observable ( subscriber => {
560
+ afterNextRender (
561
+ ( ) => {
562
+ subscriber . next ( ) ;
563
+ subscriber . complete ( ) ;
564
+ } ,
565
+ {
566
+ injector : this . _injector ,
567
+ phase : AfterRenderPhase . Read ,
568
+ } ,
569
+ ) ;
570
+ } ) . pipe ( switchMap ( ( ) => this . optionSelectionChanges ) ) ;
560
571
} ) as Observable < MatOptionSelectionChange > ;
561
572
562
573
/** Event emitted when the select panel has been toggled. */
@@ -584,10 +595,16 @@ export class MatSelect
584
595
*/
585
596
@Output ( ) readonly valueChange : EventEmitter < any > = new EventEmitter < any > ( ) ;
586
597
598
+ private _injector = inject ( Injector ) ;
599
+
587
600
constructor (
588
601
protected _viewportRuler : ViewportRuler ,
589
602
protected _changeDetectorRef : ChangeDetectorRef ,
590
- protected _ngZone : NgZone ,
603
+ /**
604
+ * @deprecated Unused param, will be removed.
605
+ * @breaking -change 19.0.0
606
+ */
607
+ _unusedNgZone : NgZone ,
591
608
defaultErrorStateMatcher : ErrorStateMatcher ,
592
609
readonly _elementRef : ElementRef ,
593
610
@Optional ( ) private _dir : Directionality ,
0 commit comments