首页 > 解决方案 > 角度 4 中的路由器在导航期间是否仅保持一种状态?

问题描述

我有两个状态 A 和 BI 从状态 A 导航到状态 B。当我从状态 B 导航回状态 A 时,状态 A 再次以角度加载。从状态 A 导航到状态 B 时状态 A 是否被破坏?如果状态A被破坏,那么如何防止状态A在后退导航中再次加载

标签: angulartypescript

解决方案


是的,Angular 一次只拥有 1 个状态。有多种保存状态的方法,拥有一个服务,它使用 getter 和 setter 保存私有变量,将其保存在 localStorage/sessionStorage、查询字符串等中……每一种都有自己的优点和缺点,我会研究更多关于它在路由器部分的 angular.io 上。

组件可以“实现”的类很少,例如 OnInit 和 OnDestroy,那么您将在代码中拥有这些函数,以便在每次加载/离开时加载/保存状态。例子:

export class ChatComponent implements OnInit, OnDestroy {
  constructor(){}
  onDestroy(){
    //save logic goes here
  }
  onInit() {
    //load logic goes here
  }
}

当然,您也可以在构造函数中加载状态,但我发现 onInit 性能更好。但请随时纠正我。


推荐阅读