Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(router): bootstrap finishes before all routes are resolved #12162

Closed
jeffbcross opened this issue Oct 7, 2016 · 4 comments · Fixed by #14608
Closed

fix(router): bootstrap finishes before all routes are resolved #12162

jeffbcross opened this issue Oct 7, 2016 · 4 comments · Fixed by #14608

Comments

@jeffbcross
Copy link
Contributor

jeffbcross commented Oct 7, 2016

I'm submitting a ... (check one with "x")

[x] bug report => search github for a similar issue or PR before submitting

Current behavior

If I have a router that requires resolving async data, bootstrap will complete before the router has finished resolving and rendering. Any parent components that have already loaded will be rendered while waiting for children to load. This behavior is most problematic with pre-rendered applications. The user will first see the pre-rendered content, then when bootstrap is complete and route resolution is still pending, they'll see either a blank page or partially-rendered page, then once all routes are resolved, the full page content will render and should match the pre-rendered content .

Expected behavior

I expect bootstrap not to complete before route resolution and rendering is complete.

Minimal reproduction of the problem with instructions

What is the motivation / use case for changing the behavior?

A smooth transition from pre-rendered page to dynamic page and preboot compatibility.

  • Angular version: 2.0.2 and router 3.1.0-rc.0
@vsavkin
Copy link
Contributor

vsavkin commented Oct 12, 2016

Notes:

Currently we trigger the initial navigation in a bootstrap listener. Angular does not wait for bootstrap listeners to complete.Moving the logic naively into an application listener will not work because the root component is not created at that point. So the router can successfully run preactivation, but cannot run activation. We can split navigate into preactivate and activate. Runpreactivatein an application listener and runactivate ` in a bootstrap listener.

@diestrin
Copy link
Contributor

Is this being address by anyone? More than 3 months and it's still happening :/

vsavkin added a commit to vsavkin/angular that referenced this issue Feb 6, 2017
vsavkin added a commit to vsavkin/angular that referenced this issue Feb 6, 2017
vsavkin added a commit to vsavkin/angular that referenced this issue Feb 6, 2017
vsavkin added a commit to vsavkin/angular that referenced this issue Feb 7, 2017
vsavkin added a commit to vsavkin/angular that referenced this issue Feb 7, 2017
mhevery pushed a commit to mhevery/angular that referenced this issue Feb 7, 2017
vsavkin added a commit to vsavkin/angular that referenced this issue Feb 7, 2017
vsavkin added a commit to vsavkin/angular that referenced this issue Feb 7, 2017
vsavkin added a commit to vsavkin/angular that referenced this issue Feb 7, 2017
gkalpak pushed a commit to gkalpak/angular that referenced this issue Feb 7, 2017
@DzmitryShylovich
Copy link
Contributor

@vicb the fix was merged so it can be closed

@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Sep 10, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.