Skip to content

Commit

Permalink
fix(snack-bar): prevent error when opening multiple snack bars in fas…
Browse files Browse the repository at this point in the history
…t succession (#2392)

Fixes #2390.
  • Loading branch information
crisbeto authored and kara committed Jan 3, 2017
1 parent 61db84d commit 161f319
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions src/lib/snack-bar/snack-bar-container.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,9 @@ export class MdSnackBarContainer extends BasePortalHost implements OnDestroy {
/** Handle end of animations, updating the state of the snackbar. */
onAnimationEnd(event: AnimationTransitionEvent) {
if (event.toState === 'void' || event.toState === 'complete') {
this._ngZone.run(() => {
this.onExit.next();
this.onExit.complete();
});
this._completeExit();
}

if (event.toState === 'visible') {
this._ngZone.run(() => {
this.onEnter.next();
Expand Down Expand Up @@ -131,8 +129,14 @@ export class MdSnackBarContainer extends BasePortalHost implements OnDestroy {
* Makes sure the exit callbacks have been invoked when the element is destroyed.
*/
ngOnDestroy() {
// Wait for the zone to settle before removing the element. Helps prevent
// errors where we end up removing an element which is in the middle of an animation.
this._completeExit();
}

/**
* Waits for the zone to settle before removing the element. Helps prevent
* errors where we end up removing an element which is in the middle of an animation.
*/
private _completeExit() {
this._ngZone.onMicrotaskEmpty.first().subscribe(() => {
this.onExit.next();
this.onExit.complete();
Expand Down

0 comments on commit 161f319

Please sign in to comment.