Ioni c вылетает после выхода из системы - PullRequest
0 голосов
/ 06 мая 2020

Мое приложение выполняет вход в систему на основе метода, который при проверке пользователя активирует боковую панель через BehaviorSubject и перенаправляет пользователя на индексный экран приложения следующим образом. login.ts


export class LoginPage implements OnInit {

  loginForm: FormGroup
  public errorMesage:string = 'Dados inválidos'
  public spinner:boolean = false;

  constructor(
    private navController: NavController,
    private apiService: ApiService,
    private tokenService: TokenServiceService,
    private sideBar: SideBarService,
    private alertController: AlertController,
    private formBuilder: FormBuilder
  ) { }

  logar() {
    this.spinner = true;
    let email = this.loginForm.get('email').value;
    let password = this.loginForm.get('password').value;

    this.apiService.login(email, password).subscribe(res => {
      if(res){
        this.spinner = false;
        this.tokenService.storageDatas(res);
        this.sideBar.show(true);
        this.navController.navigateRoot('/index')
      }else{
        this.spinner = false;
        this.presentAlert(this.errorMesage);
      }
    }, error => {
      console.log(error);
    })
  }

Сервис боковой панели выглядит следующим образом:

export class SideBarService {

  private  barChange = new BehaviorSubject<boolean>(null);

  constructor() { }

  barChoice(){
    return this.barChange.asObservable();
  }

  show(value:boolean){
    this.barChange.next(value);
  }

}

До этого момента приложение работает нормально, но когда я выхожу из системы и перенаправляю пользователя для повторного входа в систему, приложение просто зависает , дальнейшие действия невозможны. Он возвращается к экрану входа в систему, однако я не могу выполнять какие-либо дальнейшие действия в приложении. Ниже приведен код выхода из системы:

export class AppComponent implements OnInit {
  public results$: Observable<Boolean>;
  public showSideBar: boolean = false;
  public user: string = null;

  constructor(
    private navController: NavController,
    private router: Router,
    private platform: Platform,
    private splashScreen: SplashScreen,
    private statusBar: StatusBar,
    private sideBar: SideBarService,
    private tokenService: TokenServiceService
  ) {
    this.initializeApp();
  }


  ngOnInit() {

    this.results$ = this.sideBar.barChoice();
    this.results$.subscribe((resp: boolean) => {
      console.log(resp);
      if (resp) {
        this.showSideBar = true;
      } else {
        this.showSideBar = false;
      }
    })

    this.user = localStorage.getItem('user');
  }

 logout() {
    this.sideBar.show(false);
    this.tokenService.clearStorage();
    this.navController.navigateRoot('/login');
  }

На консоли после выхода из системы не отображаются ошибки. Кто-нибудь знает причину возникновения этой проблемы?

...