-
Notifications
You must be signed in to change notification settings - Fork 84
Description
This is a...
- feature request
- bug report
- usage question
What toolchain are you using for transpilation/bundling?
- @angular/cli
- Custom @ngTools/webpack
- Raw
ngc
- SystemJS
- Rollup
- Other
Environment
NodeJS Version: 10.16.0
Typescript Version: 3.2.4
Angular Version: 7.2.1
@angular-redux/store version: 10.0.0
@angular/cli version: (if applicable): 7.2.2
OS: Win 10 x64
Link to repo showing the issus
example-app
Expected Behaviour:
When I navigate by dispatching the UPDATE_LOCATION - Action the router-State should only change if the navigation succeeds. If the navigation is canceled, e.g. by a guard, the current router-State should not update to the intented target location.
Actual Behaviour:
When I navigate by dispatching the UPDATE_LOCATION - Action the router-State is updated to the target location, whether the target is reached or not. This leads to an inconsistent state.
Stack Trace/Error Message:
Additional Notes:
The behaviour can be easily reproduced in the example-app:
- Create an Action that navigates the user to /lions:
@dispatch()
goToLions() {
return {
type: UPDATE_LOCATION,
payload: '/lions'
}
}
- Protect the lions-Route with a guard:
{ path: 'lions', component: LionPageComponent, canActivate: [LionsGuard] },
...
export class LionsGuard implements CanActivate {
canActivate(): any {
console.warn('hit guard');
return false;
}
}
- Running goToLions() will update the router-State to
/lions
, even if the guard keeps me on/elephants
I navigate a lot by returning the UPDATE_LOCATION Action in Epics. Any ideas how to fix or workaround this behaviour?