guides-source
guides-source copied to clipboard
Include teardown of `this.router.on` in "Preventing and Retrying Transitions"
In the guides, it is suggested to use this.router.on as a way to prevent a route transition:
https://guides.emberjs.com/release/routing/preventing-and-retrying-transitions/#toc_preventing-transitions-via-routewillchange
However, this listener is never torn down, and will fire for all transitions in the app, regardless if they are from or to the current route.
export default class FormRoute extends Route {
@service router;
constructor() {
super(...arguments);
this.router.on('routeWillChange', (transition) => {
if (!transition.to.find(route => route.name === this.routeName) &&
!confirm('Are you sure you want to abandon progress?')) {
transition.abort();
}
});
}
};
I'd like to open a PR to include information about using router.off here. Would that be helpful?