我有一个应用程序,路径后面有视图,我需要能够从路径更改时继续,但在返回之后,组件处于初始状态。
有没有办法保持组件的状态?
答案 0 :(得分:17)
更新2
现在通过https://github.com/angular/angular/pull/13124修复了新路由器(Angular 2.3),它允许提供自定义重用策略。
Angular docs https://angular.io/api/router/RouteReuseStrategy
更新2 此答案仅适用于很久以前停用的路由器版本。
有关如何在当前路由器中执行此操作,请参阅https://angular.io/docs/ts/latest/guide/router.html#!#guards。
<强>原始强>
如果您的组件实现了CanReuse并从
返回true
routerCanReuse(next: ComponentInstruction, prev: ComponentInstruction) {
return true;
}
然后保留并重用组件,而不是销毁和重新创建。
另一种方法是将数据保存在共享服务中,并在重新创建组件时从那里获取数据。
答案 1 :(得分:3)
在这个确切的场景中有一个未解决的问题 https://github.com/angular/angular/issues/5275
只有当新组件和旧组件(当您点击“后退”按钮)具有相同的组件类型时,才能使用routerCanReuse
。
如果组件属于不同类型,Günter现在建议您唯一的选择是将状态保持在共享服务中。