tyn*_*tyn 3 ionic-framework angular angular-router ionic4
我正在使用带有 Angular 路由器的 Ionic 4 开发应用程序。我想导航到另一个页面并清除页面堆栈。在Android原生中,它是这样的:
Intent intent = new Intent(NewActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
从我到目前为止所读到的内容来看,可以使用Ionic NavController但它在 Ionic 4 中已弃用。我了解了按钮,routerLink但如果我没有记错的话,通过使用该应用程序将立即导航到另一个页面。我需要在导航到另一个页面之前执行一些逻辑。
例如:登录页面。成功登录后,用户应该无法返回登录页面。此外,通过单击“登录”按钮,它应该调用一个函数来处理登录并决定导航/不导航到另一个页面。
有什么方法可以使用 Angular 路由器实现这一点,还是需要依赖已弃用的 Ionic NavController?
Pat*_*aut 13
例如一个登录页面,它是一个根页面('/login'),点击登录按钮后导航到一个新页面,如下所示:
onLogin() {
this.router.navigateByUrl('/profile', { replaceUrl: true })
}
Run Code Online (Sandbox Code Playgroud)
它用新的 URL 替换页面历史记录条目,在这种特殊情况下用'/profile'. 使用普通<ion-back-button></ion-back-button>或浏览器的后退按钮后,您将不会被重定向到登录页面,而是被重定向到前一页。假设您的页面导航是这样的:home -> login -> profile,但历史记录只会记住home -> profile,因此点击个人资料页面上的后退按钮将带您回到首页。
对于完整的解决方案,您可以将其与Angular Route Guards结合使用,以防止基于某些条件(例如用户已登录)访问页面。可以在此答案中找到如何操作的提示。
this.router.navigateByUrl('/login', { skipLocationChange: true });
Run Code Online (Sandbox Code Playgroud)
在不将新状态推入历史的情况下进行导航。
https://angular.io/api/router/NavigationExtras
| 归档时间: |
|
| 查看次数: |
14542 次 |
| 最近记录: |