问题
The Aurelia router remembers which page I was last on, even after using setRoot() and it will redirect me to that page, even though I would want to land on the main app page again.
I'll try to explain it in a usecase.
I have two apps: login and app.
I login in login app and get redirected to app.
I navigate to /securedPage on app and then proceed to log out and get redirected to login again.
I login with another user on login and then I get redirected to app/securedPage.
I want to be and should be redirected to just app.
How do I clear the route history when switching between apps with setRoot()?
回答1:
Wanted to help out, recently got this working and the suggestions above almost work, but they are missing some parts. In this thread, the creator of Aurelia (Eisenberg) repsonds with a suggestion: https://github.com/aurelia/framework/issues/590
So to switch app root do the following:
    this.router.navigate('/', { replace: true, trigger: false });
    this.router.reset();
    this.router.deactivate();
    this.aurelia.setRoot('app');
In my case I could actually skip the reset and deactivate part and just do
    this.router.navigate('/', { replace: true, trigger: false });
However doing this.router.navigate('/') without the replace and trigger part caused problems especially when switching app root multiple times.
So make sure to add:
     ... { replace: true, trigger: false });
回答2:
did you try
this.router.deactivate();
this.router.reset();
this.app.setRoot('app');
回答3:
It is not pretty but this this did the trick for me:
router.navigate("/");
aurelia.setRoot("login")
来源:https://stackoverflow.com/questions/36247052/aurelia-clear-route-history-when-switching-to-other-app-using-setroot