【问题标题】:How to stay at the same page after page reload in Angular在Angular中重新加载页面后如何保持在同一页面
【发布时间】:2023-03-28 18:40:02
【问题描述】:

几天前我开始学习 Angular 并尝试做一个简单的 SPA。我为它们添加了 2 个组件和路由:

const appRoutes: Routes = [
  {path: 'main', component: MainPageComponent}, //default page
  {path: 'registration-form', component: RegistrationPageComponent}, //"another" page
  {path: 'login-form', component: LoginPageComponent},
  {path: '**', component: PageNotFoundComponent}
];

所以我有默认路由到主页和它上面的按钮,它导航到另一个页面(组件):

<button style="border-color: transparent;"  type="button"
        class="item7 btn btn-secondary btn-pill" [routerLink]="['/registration-form']">
   <i class="fa fa-sign-in mr-2"></i>
   {{logButtonTitle}}
</button>

当我单击此按钮时,它成功地将我导航到另一个页面(组件),但如果我在另一个页面上按 F5(浏览器页面重新加载),我的应用程序会忘记我的第二个页面并加载默认页面。 所以,我不知道如何在页面重新加载后留在另一个页面上,是否可以这样做。

附: - 我试图找到有关它的任何信息,但我找到的所有解决方案都没有帮助我。

谢谢!

更新: app.components.ts中的代码

这里我总是在应用程序启动时加载默认页面:

import {Component, OnInit} from '@angular/core';
import {Router} from '@angular/router';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
  constructor(
    private router: Router
  ) {}

  ngOnInit(): void {
    this.router.navigate(['/main']);
  }
}

【问题讨论】:

  • 您可以将当前路径存储在本地存储中,以便在首次加载应用程序时加载它。
  • 您能否为您的代码创建一个示例堆栈闪电战,以便我更好地理解您的问题。或者您可以添加 app.component.ts 的代码,以便我了解您的问题。谢谢
  • @julianobrasil 这是解决这个问题的唯一方法吗?
  • 不...您还可以将当前 URL 路径存储到数据库...这样用户可以在打开应用程序的任何地方在上次访问的路线上重新打开应用程序。
  • 移除应用组件中的导航到主目录。设置默认路由重定向,如下所示:angular.io/guide/router#setting-up-redirects

标签: angular single-page-application page-refresh


【解决方案1】:

您总是被重定向到您的 main 路由,因为您在根组件中指定导航到 main 路由。

每次重新加载应用时,其路由状态都会丢失。所以你应该从你的根组件中删除它。我不明白你为什么要那样做。

如果您希望默认使用 main 路由,请在您的路由模块中添加:

const appRoutes: Routes = [
  // first line redirects to '/main' instead of '/'
  {path: '', redirectTo: 'main',
  {path: 'main', component: MainPageComponent}, //default page
  {path: 'registration-form', component: RegistrationPageComponent}, //"another" page
  {path: 'login-form', component: LoginPageComponent},
  {path: '**', component: PageNotFoundComponent}
];

【讨论】:

  • ionut-t,抱歉我在路由器上犯的愚蠢错误,我只是尝试设置默认页面,但我不知道其他方法,非常感谢你的帮助,现在它有效!
  • @iCnoK 很高兴能为您提供帮助。你不必感到抱歉。我们都犯了错误,尤其是在开始使用新技术时。刚开始使用 Angular 时可能很难掌握,通常情况下,这是一种爱恨交织的关系。编码愉快!
猜你喜欢
  • 2019-04-02
  • 2018-05-09
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2012-08-01
相关资源
最近更新 更多