route example child change based activatedroute angular angular2-routing

example - Angular2 Routing: mantener el estado del componente cuando la ruta cambia



router events angular 6 (2)

Tengo una aplicación, con vistas detrás de rutas, necesito poder continuar desde el punto en que cambió la ruta, pero después de regresar, el componente está en su estado inicial.

¿Hay alguna manera de mantener el estado de un componente?


Hay un problema abierto en este escenario exacto en https://github.com/angular/angular/issues/5275

Puede usar routerCanReuse solo si el componente nuevo y el componente anterior (cuando presiona el botón "atrás") son del mismo tipo de componente.

Como sugirió Günter, su única opción ahora si los Componentes son de diferente tipo es mantener el estado en un servicio compartido.


actualización 2

Ahora está solucionado (Angular 2.3) para el nuevo enrutador mediante https://github.com/angular/angular/pull/13124 que permite proporcionar una estrategia de reutilización personalizada.

Para ver un ejemplo, consulte también https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx

Documentos angulares https://angular.io/api/router/RouteReuseStrategy

actualización 2 Esta respuesta es solo para una versión de enrutador descontinuada hace mucho tiempo.

Consulte https://angular.io/docs/ts/latest/guide/router.html#!#guards para https://angular.io/docs/ts/latest/guide/router.html#!#guards cómo hacerlo en el enrutador actual.

original

Si sus componentes implementan CanReuse y devuelve true desde

routerCanReuse(next: ComponentInstruction, prev: ComponentInstruction) { return true; }

entonces el componente se conserva y se reutiliza en lugar de destruirlo y recrearlo.

Otra forma es mantener los datos en un servicio compartido y recuperarlos desde allí cuando se recrea el componente.