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?
In the guides, it is suggested to use
this.router.onas 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.
I'd like to open a PR to include information about using
router.offhere. Would that be helpful?