角度路由器按需销毁路线的存储组件

时间:2019-05-01 19:08:19

标签: angular angular-routing

我有一个角度应用程序,在其中实现了路由重用策略类,该类将通过shouldDetach()方法检查存储在我的路由对象上的值。像这样:

  shouldDetach(route: ActivatedRouteSnapshot): boolean {
        if (route.data.shouldReuse == true) {
            return true;
        }
        else {
            return false;
        }
    }

在大多数情况下,我希望在用户浏览时缓存路由返回的组件……换句话说,我希望状态的任何用户定制都可以保留,而rxjs订阅也可以保留。但是有时候,在某些用户输入下,我希望能够重置路由并允许在路由的组件上触发onDestroy。

到目前为止,我发现这样做的唯一方法是:

  1. 在路由配置对象中以编程方式将我的路由的shouldReuse值更改为false
  2. 使用this.router.navigate()导航到其他路线。
  3. 导航至我要销毁的路线。
  4. 然后导航到其他路线。

然后ngOnDestroy()才会在我要销毁的路线上开火……让我取消订阅可观测的数据。

这显然是销毁我路线的已保存组件的一种非常骇人听闻的方法。我需要其他一些方法来响应用户的操作。

是否可以直接在路由上访问.destroy方法?我的“路由重用策略”类中的其他方法又如何呢?我可以利用其中任何一种方法来实现这一目标吗?

0 个答案:

没有答案