我有一个角度应用程序,在其中实现了路由重用策略类,该类将通过shouldDetach()
方法检查存储在我的路由对象上的值。像这样:
shouldDetach(route: ActivatedRouteSnapshot): boolean {
if (route.data.shouldReuse == true) {
return true;
}
else {
return false;
}
}
在大多数情况下,我希望在用户浏览时缓存路由返回的组件……换句话说,我希望状态的任何用户定制都可以保留,而rxjs订阅也可以保留。但是有时候,在某些用户输入下,我希望能够重置路由并允许在路由的组件上触发onDestroy。
到目前为止,我发现这样做的唯一方法是:
shouldReuse
值更改为false
。this.router.navigate()
导航到其他路线。然后ngOnDestroy()
才会在我要销毁的路线上开火……让我取消订阅可观测的数据。
这显然是销毁我路线的已保存组件的一种非常骇人听闻的方法。我需要其他一些方法来响应用户的操作。
是否可以直接在路由上访问.destroy
方法?我的“路由重用策略”类中的其他方法又如何呢?我可以利用其中任何一种方法来实现这一目标吗?