Angular2,在路由更改之间缓存 UI/Template 的状态

Angular2, State of UI/Template being cached between route changes

我一直在 Angular2.beta.0 上构建应用程序,我已经实现了路由器和组件。

我在其中一个组件模板上有一个叠加层和一个基于模式的简单菜单,单击菜单中的 link 将更改路线并加载另一个相关组件。

如果使用浏览器的后退按钮访问具有模态的上一个组件,模态和叠加层将保持其打开状态。

这些模式驻留在组件模板本身中,最初设置为显示 none 并且 showed/hidden 在单击按钮时使用 jQuery。

这似乎不是模板缓存问题,因为如果模板被缓存,模式将被隐藏,而不是 DOM 与模板的状态被缓存。

正如@codin所建议的那样

默认情况下,Angular2 缓存 DOM 并重用它(检查 @tbosch's comment). To prevent this behavior you can use APP_VIEW_POOL_CAPACITY 并给它 0 作为值。

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