angular-ui / ui-router

The de-facto solution to flexible routing with nested views in AngularJS
http://ui-router.github.io/
MIT License
13.56k stars 3.01k forks source link

When resolving an onBefore promise, the previous state is removed while async resolves are still pending. #3827

Open robertvanhoesel opened 3 years ago

robertvanhoesel commented 3 years ago

This is a (check one box):

My version of UI-Router is: 1.0.28

Bug Report

Current Behavior:

We can return a promise to transitions.onBefore(), if the promises resolves, I observe that the router starts the exit/retain/enter flow, and in turn removes the original state from the DOM.

The new state is only added after all async resolves are completed. In the mean time this leaves an empty dom or 'flickering' page.

Expected Behavior:

I expect the behavior to be the same to when I am not using an async onBefore, which is: Don't exit the original state until all async resolves are completed.

When returning a promise transitions.onEnter() the behavior is as expected. I can work with that.

If you think I am on to something here I am happy to provide a repro – otherwise feel free to ignore. Thanks for maintaining this useful project!

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

This does not mean that the issue is invalid. Valid issues may be reopened.

Thank you for your contributions.