Es fundamental comprender el código bien antes de utilizarlo a tu trabajo si tquieres aportar algo puedes dejarlo en la sección de comentarios.
Solución:
Configure un observador en el $route
en tu componente así:
watch:
$route (to, from)
this.show = false;
Esto observa los cambios de ruta y cuando se cambia, establece show
a false
Si está utilizando v2.2.0, hay una opción más disponible para detectar cambios en $routes.
Para reaccionar a los cambios de parámetros en el mismo componente, puede observar el objeto $route:
const User =
template: '...',
watch:
'$route' (to, from)
// react to route changes...
O use el protector beforeRouteUpdate introducido en 2.2:
const User =
template: '...',
beforeRouteUpdate (to, from, next)
// react to route changes...
// don't forget to call next()
Referencia: https://router.vuejs.org/en/essentials/dynamic-matching.html
En caso de que alguien esté buscando cómo hacerlo en mecanografiado, aquí está la solución.
@Watch('$route', immediate: true, deep: true )
onUrlChange(newVal: Route)
// Some action
Y sí, como menciona @Coops a continuación, no olvide incluir
import Watch from 'vue-property-decorator';
Editar:
Alcalyn hizo un muy buen punto al usar el tipo Ruta en lugar de usar cualquier
import Watch from 'vue-property-decorator';
import Route from 'vue-router';
Al final de la web puedes encontrar las críticas de otros sys admins, tú de igual manera tienes la opción de mostrar el tuyo si lo crees conveniente.