Angular2 Routing - 在路由更改时保持组件的状态

时间:2015-11-26 13:36:13

标签: angular angular2-routing

我有一个应用程序,路径后面有视图,我需要能够从路径更改时继续,但在返回之后,组件处于初始状态。

有没有办法保持组件的状态?

2 个答案:

答案 0 :(得分:17)

更新2

现在通过https://github.com/angular/angular/pull/13124修复了新路由器(Angular 2.3),它允许提供自定义重用策略。

有关示例,另请参阅https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx

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现在建议您唯一的选择是将状态保持在共享服务中。