0

我想让用户在登录后返回到以前的 URL,就像您在 oyorooms.com 或 fabhotels.com 上搜索任何酒店然后突然登录那里一样。

登录后,您可以看到上一页或说出之前的活动,例如您在网站上搜索的内容。所以,我想在我的 Angular 应用程序中这样做。

怎么做?

4

1 回答 1

0

在这种情况下,您可以做一件事,将您以前的 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;
      })
    );
  }
于 2020-06-20T10:20:16.077 回答