我想让用户在登录后返回到以前的 URL,就像您在 oyorooms.com 或 fabhotels.com 上搜索任何酒店然后突然登录那里一样。
登录后,您可以看到上一页或说出之前的活动,例如您在网站上搜索的内容。所以,我想在我的 Angular 应用程序中这样做。
怎么做?
在这种情况下,您可以做一件事,将您以前的 url 保存在 service 或 localStorage 中,并在登录页面后重定向到保存的以前的 url。
就我而言,我是这样处理的:
和守卫:
canActivate(
return this.checkAuth();
}
checkAuth(): Observable<boolean> {
if (this.isUserLogged()) {
return of(true);
} else {
const url = window.location.pathname;
if (
url === '/setting'
) {
this.router.navigate(['/home']);
return of(false);
} else {
return this.openLoginModal();
}
return false;
}
}
openLoginModal(): Observable<boolean> {
this.bsModalRef = this.modalService.show(LoginComponent, {
class: 'modal-lg registerpopup'
});
this.bsModalRef.content.title = 'New Client';
return this.bsModalRef.content.loginEmitter.pipe(
tap((isLoggedIn: boolean) => {
alert(isLoggedIn);
this.isLoggedIn = isLoggedIn;
this.bsModalRef.hide();
this.bsModalRef = null;
})
);
}