问题描述
我已经创建了登录,注册,更改密码和注销服务(它们可以工作)。用户登录后,用户名显示而不是登录按钮,但是用户需要刷新站点或导航到其他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。