mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
fix(modal): fix timing issue when rapidly closing and opening controller modal (#24380)
This commit is contained in:
@@ -494,7 +494,20 @@ export class Modal implements ComponentInterface, OverlayInterface {
|
||||
|
||||
if (dismissed) {
|
||||
const { delegate } = this.getDelegate();
|
||||
await detachComponent(delegate, this.usersElement);
|
||||
|
||||
/**
|
||||
* If the modal is presented through a controller, we don't need to detach
|
||||
* since the el was already removed during the `dismiss` call above. Skipping
|
||||
* this step also prevents an issue where rapdily dismissing right after
|
||||
* presenting could cause `detachComponent` to be called after the present
|
||||
* finished, blanking out the newly opened modal.
|
||||
*
|
||||
* TODO(FW-423) try and find a way to resolve the race condition directly
|
||||
*/
|
||||
if (this.inline) {
|
||||
await detachComponent(delegate, this.usersElement);
|
||||
}
|
||||
|
||||
if (this.animation) {
|
||||
this.animation.destroy();
|
||||
}
|
||||
@@ -507,7 +520,6 @@ export class Modal implements ComponentInterface, OverlayInterface {
|
||||
|
||||
this.currentTransition = undefined;
|
||||
this.animation = undefined;
|
||||
|
||||
return dismissed;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user