Метод выхода из аутентификации Angularfire не работает после реализации вкладки

avatar
Sireini
8 апреля 2018 в 12:23
597
1
7

В моем app.component.ts есть функция выхода из системы, которая выглядит следующим образом:

export class MyApp {
    @ViewChild(Nav) nav: Nav;

    constructor(){
       this.accountMenuItems = [
          { title: 'Login', component: AuthPage, icon: 'log-in' },
          { title: 'My Account', component: MyAccountPage, icon: 'contact' },
          { title: 'Logout', component: AuthPage, icon: 'log-out' },
       ];
    }

    logOut() {
       this.authenticate.signOut();

       //THIS BELOW ISN"T NEEDED WHEN I COMMENT OUT THE TABMENU
       this.nav.setRoot(this.accountMenuItems[2].component);
    }
}

и метод signtout в службе аутентификации с именем authenticate:

signOut(): Promise<void> {
    return this.afAuth.auth.signOut();
}

Но когда я выполняю эту функцию с меню вкладок, она больше не выходит из системы. Я заметил, что когда я комментирую меню вкладок, оно работает, вот меню вкладок:

<ion-nav [root]="rootPage" main #content swipeBackEnabled="false"></ion-nav>

<ion-tabs>
    <ion-tab [root]="tab1Root" tabIcon="home"></ion-tab>
    <ion-tab [root]="tab2Root" tabIcon="search"></ion-tab>
    <ion-tab [root]="tab3Root" tabIcon="map"></ion-tab>
    <ion-tab [root]="tab4Root" tabIcon="bookmark"></ion-tab>
</ion-tabs>

tab1Root = HomePage;
tab2Root = RestaurantListPage;
tab3Root = NearbyPage;
tab4Root = FavoriteListPage;

Когда я комментирую вкладки, это работает, вероятно, потому что у меня есть два activeNavs?

Источник
Sireini
10 апреля 2018 в 21:15
0

Кто-нибудь знает, что здесь происходит?

Ответы (1)

avatar
Sarasa Gunawardhana
11 апреля 2018 в 13:31
3

Вы вызываете AuthPage для выхода из системы, поэтому вы не можете выйти из системы, а внутри конструктора AuthPage вы не вызываете функцию logOut.

constructor(){
       this.accountMenuItems = [
          { title: 'Logout', component: AuthPage, icon: 'log-out' }, 
       ];
    }

Для работы функции выхода из системы вы можете сделать это следующим образом. Создайте LogOutPage и внутри конструктора вызовите функцию logOut.

Это файл app.component.ts

import { LogoutPage } from '../pages/logout/logout'; //import logout Page

export class MyApp {
@ViewChild(Nav) nav: Nav;

  constructor(){
     this.accountMenuItems = [
        { title: 'Login', component: AuthPage, icon: 'log-in' },
        { title: 'My Account', component: MyAccountPage, icon: 'contact' },
        { title: 'Logout', component: LogoutPage, icon: 'log-out' }, // calling logout Page
     ];
  }
}

Это logout.ts файл

import { Component } from '@angular/core';
import { NavController} from 'ionic-angular';
import { LoginPage } from '../pages/login/login';

@Component({
  selector: 'page-logout',
  templateUrl: 'logout.html',
})
export class LogoutPage {

  constructor(public navCtrl: NavController) {
    //call signOut() method here using your auth provider
    this.nav.setRoot(LoginPage);
  }

}
Sireini
11 апреля 2018 в 17:42
0

Спасибо за ответ, но почему это работает без меню вкладок, даже без установки метода setRoot..