Angular 离开后不销毁页面
由于工作上的一些需要,我开始使用Ionic(TypeScript+Angular),我以前从未为mobile编写过代码,这是我第一次 我遇到了一个我不知道如何解决的问题,让我试着解释一下流程: 流程1Angular 离开后不销毁页面,angular,typescript,ionic-framework,Angular,Typescript,Ionic Framework,由于工作上的一些需要,我开始使用Ionic(TypeScript+Angular),我以前从未为mobile编写过代码,这是我第一次 我遇到了一个我不知道如何解决的问题,让我试着解释一下流程: 流程1 UserA使用其用户/密码登录 UserA在登录后被重定向到配置文件页面 UserA注销 流程2 UserB使用其用户/密码登录 UserB在登录后被重定向到配置文件页面(他会看到UserA配置文件信息) 考虑 我使用@ionic/storage存储会话,但与存储问题无关,我知道这是因为在注销后我
有一种方法可以强制在router之后销毁最后一个内容。导航()到另一个页面?由于页面转换/状态原因,Ionic有时会在DOM中保留太多页面。因此,您可以使用生命周期方法在页面“重新输入”时重置页面的状态。IonViewWillEnter生命周期方法将在用户每次导航到该页面时触发,无论其是否已在DOM中。有关事件的用法,请参见此处:默认情况下,Ionic不会销毁页面-它将页面保存在DOM中,以通过后退/前进按钮启用旅行。在普通角度路由中,您可以通过路由使用策略来控制这一点,但如果您使用的是离子路由器插座,则无法控制。ion router outlet实现了一个存储导航历史的堆栈,并且仅在创建组件后运行Ionic lifecycle挂钩。您可以使用navigateRoot()清除此堆栈,或者切换到Angular的路由器出口和路由器
在我看来,这是一个重大的缺陷,而且没有足够好的文档记录。在许多情况下,不希望无限期地将渲染组件存储在DOM中,这可能会对性能产生重大影响。我使用Ionic 4 Angular 8时也遇到了同样的问题。当用户单击注销时,我使用
{replaceUrl:true}
修复了它。例如:
logout() {
...
this.router.navigate(["login"], { replaceUrl: true });
}