2015-12-19 1 views
1

J'ai construit une application sur Angular2.beta.0, j'ai mis en œuvre le routeur et les composants. J'ai une superposition et un simple menu modal sur l'un des modèles de composants, en cliquant sur un lien dans le menu changerait l'itinéraire et charger un autre composant pertinent.Angular2, état de l'interface utilisateur/modèle étant mis en cache entre les changements de route

Si, en utilisant le bouton Précédent du navigateur, vous accédez au composant précédent avec le modal, Le modal et la superposition conservent leur état ouvert. Ces modaux résident dans le modèle de composant lui-même et sont initialement définis pour ne pas en afficher et sont affichés/masqués à l'aide de jQuery lors d'un clic sur un bouton. Cela ne semble pas être un problème de mise en cache de modèle car si le modèle était en cache, les modaux seraient masqués, plutôt que l'état du DOM avec le modèle en cache.

+1

Ajoutez 'fournir (APP_VIEW_POOL_CAPACITY, {useValue: 0})' dans votre bootstrap. –

+0

@Eric Martinez, ça marche, mais si vous pouviez l'élaborer plus. – codin

+0

Comme vous l'avez deviné, le DOM est en cache, c'est par défaut. Lisez ceci [commentaire par @tbosch] (https://github.com/angular/angular/issues/4795#issuecomment-151688714) –

Répondre

1

Comme le suggère @codin

Par défaut Angular2 met en cache les DOM et réutilise (vérifier @tbosch's comment). Pour éviter ce comportement, vous pouvez utiliser APP_VIEW_POOL_CAPACITY et lui attribuer 0 comme valeur.

bootstrap(MyApp, provide(APP_VIEW_POOL_CAPACITY, {useValue : 0}));