登录后如何在没有location.reload的情况下使用角度路由器重新加载组件?

问题描述

我已经创建了登录注册,更改密码和注销服务(它们可以工作)。用户登录后,用户名显示而不是登录按钮,但是用户需要刷新站点或导航到其他URL才能显示用户名

location.reload()解决了这个问题,但这并不是最好的选择。

我的身份验证路由的结构如下:

在app-routing.module.ts中,我有

<a target="_blank"  *ngIf="value.url" [routerLink]="['inquiry','5452']">{{value.data  | translate | removeHTMLTags }}</a>

然后在pages-routing.module中,我具有身份验证路由,例如:

path: 'auth',loadChildren: () => import('./pages/pages.module').then(m => m.PagesModule)

我对位于app / services /中的每个身份验证过程使用一项服务,并且组件位于app / pages /目录中。

编辑:澄清一下:登录表单是一个弹出窗口,可以出现在我网站的每个页面上。因此,一旦用户登录,用于打开登录表单的按钮就会被用户名替换,但是当用户重新加载页面或导航至其他URL时,就会发生这种情况。我希望这种情况在用户登录(或注册,注销等)后立即发生,并且希望用户停留在同一页面上。我可以想到的一种方法快速导航到另一个页面,然后返回同一页面,但我认为这不是一个很好的解决方

解决方法

您可以通过路由器服务导航到其他路线,如下所示:

import {Router} from '@angular/router';

constructor(private router: Router) {}

navigateToLogin() {
  this.router.navigateByUrl('/login');
}

您可以使用.navigateByUrl()转到某个绝对路径,并使用.navigate()按相对路径转到其他URL。