@@ -22,7 +22,10 @@ import {DOCUMENT} from '@angular/common';
2222import {
2323 AfterContentChecked ,
2424 AfterContentInit ,
25+ afterNextRender ,
26+ AfterRenderPhase ,
2527 AfterViewInit ,
28+ ANIMATION_MODULE_TYPE ,
2629 ChangeDetectionStrategy ,
2730 ChangeDetectorRef ,
2831 Component ,
@@ -32,8 +35,10 @@ import {
3235 ElementRef ,
3336 EventEmitter ,
3437 forwardRef ,
38+ inject ,
3539 Inject ,
3640 InjectionToken ,
41+ Injector ,
3742 Input ,
3843 NgZone ,
3944 OnDestroy ,
@@ -42,18 +47,17 @@ import {
4247 QueryList ,
4348 ViewChild ,
4449 ViewEncapsulation ,
45- ANIMATION_MODULE_TYPE ,
4650} from '@angular/core' ;
4751import { fromEvent , merge , Observable , Subject } from 'rxjs' ;
4852import {
4953 debounceTime ,
54+ distinctUntilChanged ,
5055 filter ,
5156 map ,
57+ mapTo ,
5258 startWith ,
5359 take ,
5460 takeUntil ,
55- distinctUntilChanged ,
56- mapTo ,
5761} from 'rxjs/operators' ;
5862import { matDrawerAnimations } from './drawer-animations' ;
5963
@@ -750,6 +754,8 @@ export class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy
750754 return this . _userContent || this . _content ;
751755 }
752756
757+ private _injector = inject ( Injector ) ;
758+
753759 constructor (
754760 @Optional ( ) private _dir : Directionality ,
755761 private _element : ElementRef < HTMLElement > ,
@@ -933,9 +939,12 @@ export class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy
933939 // NOTE: We need to wait for the microtask queue to be empty before validating,
934940 // since both drawers may be swapping positions at the same time.
935941 drawer . onPositionChanged . pipe ( takeUntil ( this . _drawers . changes ) ) . subscribe ( ( ) => {
936- this . _ngZone . onMicrotaskEmpty . pipe ( take ( 1 ) ) . subscribe ( ( ) => {
937- this . _validateDrawers ( ) ;
938- } ) ;
942+ afterNextRender (
943+ ( ) => {
944+ this . _validateDrawers ( ) ;
945+ } ,
946+ { injector : this . _injector , phase : AfterRenderPhase . Read } ,
947+ ) ;
939948 } ) ;
940949 }
941950
0 commit comments