仅在从特定路线导航时实施RouteReuseStrategy的shouldAttach

时间:2019-12-02 08:13:34

标签: angular angular-router angular-activatedroute

我试图存储一条路径,当我从一条特定的路线导航时,我将重用它。目标是仅在从特定按钮导航时才还原存储的路径,而不是在诸如顶部菜单导航的其他导航上还原。

有以下三个组成部分。

1)HomeComponent-用户登录后,这就是登陆组件。

2)SearchComponent-用户从HomeComponent在顶部菜单中导航。用户在这里搜索多个条件(我要存储和重用的组件)。显示搜索结果。

3)DetailsComponent-从搜索结果中,用户使用每一行的编辑图标在此处导航。详细信息显示在这里。我这里有一个后退按钮,它将用户带到SearchComponent。我只想在用户使用此后退按钮进行导航时还原SearchComponent。还有一个顶层菜单,用户可以使用它进入SearchComponent。在这种情况下,我不想还原SearchComponent。

我经历了this link,并且能够存储和恢复SearchComponent。问题是,无论从哪里导航到SearchComponent,该组件都将还原。我只想在用户单击DetailsComponent的后退按钮时还原它。从顶部菜单导航时,我不想还原SearchComponent。请在下面找到我的代码。


export class AppRoutingCache implements RouteReuseStrategy {
  routesToCache: string[] = ['home/search'];
  storedRouteHandles = new Map<string, DetachedRouteHandle>();

  shouldDetach(route: ActivatedRouteSnapshot): boolean {
    return this.routesToCache.indexOf(route.data["key"]) > -1;
  }

  store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
    this.storedRouteHandles.set(route.data["key"], handle);
  }

  shouldAttach(route: ActivatedRouteSnapshot): boolean {
    return this.storedRouteHandles.has(route.data["key"]);
  }

  retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
    return this.storedRouteHandles.get(route.data["key"]);
  }

  shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
    return future.routeConfig === curr.routeConfig;
  }
}

预先感谢

0 个答案:

没有答案