Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户数据在angular中注销后仍保留,原因是什么_Angular_Typescript_Session - Fatal编程技术网

用户数据在angular中注销后仍保留,原因是什么

用户数据在angular中注销后仍保留,原因是什么,angular,typescript,session,Angular,Typescript,Session,一切正常,但当我想切换一个用户并注销时,下一个用户不会更新其数据,而是继承上一个用户的图像和数据。。。 我使用会话存储和本地存储,但即使用户从存储中删除,它仍然显示lol 这是我的特殊代码: page1.ts //vars personSubject = new ReplaySubject<any>(1); person$: Observable<any> = this.personSubject.asObservable(); getFullPosts:

一切正常,但当我想切换一个用户并注销时,下一个用户不会更新其数据,而是继承上一个用户的图像和数据。。。 我使用会话存储和本地存储,但即使用户从存储中删除,它仍然显示lol

这是我的特殊代码:

page1.ts

  //vars
  personSubject = new ReplaySubject<any>(1);
  person$: Observable<any> = this.personSubject.asObservable();
  getFullPosts: Observable<any>;
  public userGallery: any;

    getFullPosts() {
    this.authService.getAllPosts().subscribe((res: any) => {
      this.getFullPosts = res.data.post;
      this.personSubject.next(res.data.post)
      this.userGallery = res.data.post.forEach(img => {
        img.galleryImages = img.images.map(image => {
          return new ImageItem({ src: image, thumb: image });
        });
      })
    });

//vars

constructor(){
 this.keepToken = window.sessionStorage.getItem('token');

    if (this.completeUser != null) {
      console.log("User data is : ", this.getUser);
      console.log("User token is : ", this.keepToken);
    } else {
      console.log("Can't get token..")
    }
}

  public get getToken(): any {
    const TOKEN = window.sessionStorage.getItem('token');
    return TOKEN;
  }

  public get getUser(): UserRegistered {
    const USER = JSON.parse(window.sessionStorage.getItem('user'));
    return USER;
  }


 async logout() {
    // remove user from local storage and set current user to null
    window.sessionStorage.setItem('button', 'true');
    this.clicked = window.sessionStorage.getItem('button');

    const loading = this.loadingCtrl.create({
      keyboardClose: true,
      message: "Logging out. Please wait ...",
      duration: 2500
    });

    (await loading).present();

    setTimeout(async () => {
      const user = window.sessionStorage.removeItem('user');
      const remember = window.sessionStorage.removeItem('remember');

      const getuser = window.sessionStorage.getItem('user');
      console.log(user, remember, getuser);

      window.sessionStorage.setItem('button', 'false');
      this.clicked = window.sessionStorage.getItem('button');
      const redirect = this.router.navigate(['/auth']);
      (await loading).dismiss();
      await redirect;
      window.sessionStorage.clear();
    }, 3500)

  }

page2.ts

  //vars
  personSubject = new ReplaySubject<any>(1);
  person$: Observable<any> = this.personSubject.asObservable();
  getFullPosts: Observable<any>;
  public userGallery: any;

    getFullPosts() {
    this.authService.getAllPosts().subscribe((res: any) => {
      this.getFullPosts = res.data.post;
      this.personSubject.next(res.data.post)
      this.userGallery = res.data.post.forEach(img => {
        img.galleryImages = img.images.map(image => {
          return new ImageItem({ src: image, thumb: image });
        });
      })
    });

//vars

constructor(){
 this.keepToken = window.sessionStorage.getItem('token');

    if (this.completeUser != null) {
      console.log("User data is : ", this.getUser);
      console.log("User token is : ", this.keepToken);
    } else {
      console.log("Can't get token..")
    }
}

  public get getToken(): any {
    const TOKEN = window.sessionStorage.getItem('token');
    return TOKEN;
  }

  public get getUser(): UserRegistered {
    const USER = JSON.parse(window.sessionStorage.getItem('user'));
    return USER;
  }


 async logout() {
    // remove user from local storage and set current user to null
    window.sessionStorage.setItem('button', 'true');
    this.clicked = window.sessionStorage.getItem('button');

    const loading = this.loadingCtrl.create({
      keyboardClose: true,
      message: "Logging out. Please wait ...",
      duration: 2500
    });

    (await loading).present();

    setTimeout(async () => {
      const user = window.sessionStorage.removeItem('user');
      const remember = window.sessionStorage.removeItem('remember');

      const getuser = window.sessionStorage.getItem('user');
      console.log(user, remember, getuser);

      window.sessionStorage.setItem('button', 'false');
      this.clicked = window.sessionStorage.getItem('button');
      const redirect = this.router.navigate(['/auth']);
      (await loading).dismiss();
      await redirect;
      window.sessionStorage.clear();
    }, 3500)

  }


注销后,我使用另一个帐户重新登录,但数据不会随新用户更新,但在控制台中,我获得了正确的新用户数据,只是前端没有显示。有什么想法吗?

这可以通过删除“firebase:session:”的
localStorage
条目来解决

window.localStorage.removietem(“firebase:session:”;

在设置超时时,console.log打印什么?用户数据还是未定义?否则,为什么要对“person”使用ReplaySubject(它代表您的用户,对吗?),因为ReplaySubject可以大致“重放”旧值,就像您以前的用户运行
window.sessionStorage.clear()一样在重定向工作之前?更好的是,你能在导航结束后再做吗?:
this.router.navigate(['/auth'])。然后(()=>{window.sessionStorage.clear();})@KevinALBRECHT console.log(用户,记住,getuser);注销后,所有值都为空。不知道这会在replaysubject上重复调用,我该怎么做?@Inst1nct尝试使用一个简单的“主题”,看看是否有任何变化更多关于主题类型的信息:哟,兄弟,它就像一个符咒。。Idk这是什么把戏,但只要它起作用。。游戏打得好