/ / Recargas de ruta secundaria RC5 de Angular 2 que contienen componente y módulo - angular, angular2-routing

Recargas de rutas secundarias de Angular 2 RC5 que contienen componente y módulo - angular, angular2-routing

tener un problema con reinicialización angular 2más de la aplicación general de lo que pensé que lo haría en la navegación de ruta. para crear una demostración rápida, copié el tutorial de enrutamiento angular 2 para exponer el problema:

http://plnkr.co/edit/wAjaIAva0caufEZJG36s?p=preview

En esta demo de aspecto familiar, el centro de crisis.Las rutas se cargan perezosamente desde el modelo crisis-center. "He agregado algunos marcadores de" widget "en las páginas del centro de crisis. Si hace clic en el enlace" Centro de crisis ", a continuación, incremente el enlace" Agregar widget "unas cuantas veces, luego haga clic en uno de los listados secundarios. notará que dos de los contadores de widgets están reinicializados.

Parece que la crisis-center.module, el servicio de crisis que proporciona, y la crisis-center.component son todos completamente reinicializado Con cada cambio de ruta! Para sistemas simples, esto podría no ser un problema, pero cualquier dato del estado importante (como, por ejemplo, una sesión de API) relacionado con el servicio de crisis provisto por crisis.module se perdería con cada navegación, a diferencia de cualquier dato en el app.service proporcionado por el app.module.

Considere el diseño de esta aplicación, que está más cerca de mi aplicación problema real:

|- /app
|  |- app.component
|  |- app.module
|  |- app.routing                     <-- app routes, including lazy load for feature.module for all /feature routes (loadChildren)
|  |- app-api.service                 <-- provided by app.module, handles master auth
|  |- /feature
|  |  |- /child-feature
|  |  |  |- child-feature-1.component <-- displays in feature.component"s router-outlet
|  |  |  "- child-feature-2.component <-- displays in feature.component"s router-outlet
|  |  |- feature-api.service          <-- this feature"s api, provided by feature.module
|  |  |- feature-container.component  <-- has a router-outlet for child-features
|  |  |- feature-menu.component       <-- displays in feature.component
|  |  |- feature-status.component     <-- displays in feature.component
|  |  |- feature.module               <-- provides feature-api.service
|  |  "- feature.routing              <-- feature routes, loaded in feature.module
|  |- /other-feature
|  |  |- other-feature.component
|  |  |- other-feature-list.component
|  |  |- other-feature-detail.component
|  |  |- other-feature.module
|  |  "- other-feature.routing
|  "- main
|- /node_modules
|- /typings
|- index.html
|- systemjs.config.js
"- tsconfig.json

en mi aplicación, "característica.el módulo "requiere autenticación a una api específica, pero esta autenticación no se requiere en ninguna otra área de la aplicación. Como tal, solo quiero cargar el servicio de la API en ese módulo, aislándolo del resto de la aplicación. Demostración, esta API se reinicializa entre cada navegación de ruta. También el menú de características y el estado de las características fuera del enrutador-salida en el contenedor de características también se reinicializan en cada navegación de ruta.

esto parece realmente contrario a la intuición - no debería¿Angular solo está cambiando el componente interior de la salida del enrutador en la navegación secundaria? también, una vez que se carga un módulo (y cualquier servicio que proporciona), ¿no deberían ser parte de la aplicación general y no reinicializarse en todas las rutas de navegación?

Supongo que mi pregunta es, "se supone angular 2¿tiene este comportamiento? "y si la respuesta es" sí ", entonces" ¿Cómo debo hacer para mantener los servicios de estado en los submódulos? "y también" ¿Hay una manera de hacer que la navegación se aplique solo a la salida del enrutador más interior ( sin usar una salida con nombre)?

Muchas gracias por leer esta novela, y cualquier comentario es muy apreciado. Reescribió la pregunta para aclararla;)

Respuestas

1 para la respuesta № 1

En caso de que alguien tenga alguno de estos dos problemas, ambos son completamente arreglado en RC6. No estoy seguro de cómo nadie hizo un gran hedor por esto durante RC5, pero al menos está resuelto ahora :)