簡體   English   中英

頁面導航問題ionic2和angular2

[英]Page Navigation Issues ionic2 and angular2

在我的Ionic 2應用程序中,有兩個頁面,但是在加載ProfilePage之后,它將推送LoginPage ,然后刷新它,然后頁面變為空白。 有人知道為什么會這樣嗎?

這是我的代碼

app.component.ts

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from 'ionic-native';

import { ProfilePage } from '../pages/profile/profile';
import { LoginPage } from '../pages/login/login';
import { AuthService } from '../services/auth/auth.service';

@Component({
  template: `<ion-nav [root]="rootPage"></ion-nav>`
 })
 export class AuthApp {
   rootPage: any = ProfilePage;

   constructor(platform: Platform, private auth: AuthService) {
     platform.ready().then(() => {       
       StatusBar.styleDefault();
       auth.startupTokenRefresh();
     });
   }
 }

profile.ts

 import {Component} from '@angular/core';
 import {AuthService} from '../../services/auth/auth.service';
 import { NavController } from 'ionic-angular';
 import { LoginPage } from '../login/login';

 @Component({
   templateUrl: 'profile.html',
 })
 export class ProfilePage {
   constructor(public auth: AuthService, public navCtrl: NavController) {

   }

   ngOnInit() {
    console.log(this.auth.authenticated())
    if (!this.auth.authenticated()) {
        this.navCtrl.setRoot(LoginPage);
    }
   }
 }

登錄名

 import { Component } from '@angular/core';
 import { NavController } from 'ionic-angular';
 @Component({
   templateUrl: 'login.html',
 })
 export class LoginPage {
    authType: string = "login";
    error: string;

   constructor(public navCtrl: NavController) {}
 }

關於我做錯了什么建議嗎? 為什么在推動LoginPage時刷新?

可能是因為您將頁面設置為root而不是將其推送。 代替this.navCtrl.setRoot(LoginPage); 您可以嘗試this.navCtrl.push(LoginPage);

ngOnInit()的console.log語句是否被打印兩次?

ngOnInit()可能被調用兩次 :一次是在聲明頁面時調用,第二次是在每次按下頁面時調用。

您可以嘗試將ngOnInit()更改為ionViewDidLoad() (有關更多信息,請參見此資源

無論如何,如果您可以發布app.module.ts文件的內容,將大有幫助。 為什么頁面類中沒有@IonicPage裝飾器?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM