Ionic-framework: Ionic2 - nav.setRoot(Component) - Hanya berfungsi pertama kali, tidak dapat menavigasi setelahnya, tidak ada kesalahan yang dilaporkan

Dibuat pada 18 Mar 2016  ·  100Komentar  ·  Sumber: ionic-team/ionic-framework

Deskripsi singkat masalah:

Saya sedang mengembangkan aplikasi dengan Ionic2. Saya memiliki App.ts sebagai induknya, Welcome.ts sebagai halaman anak dan Featured.ts sebagai halaman anak juga. Saya memiliki firebase yang terintegrasi dengan aplikasi. Rootpage pertama kali disetel ke Welcome.

this.rootPage = Welcome;

Langkah 1: Saya mengklik tombol Selamat datang untuk mengautentikasi dengan Google, setelah onAuth dipanggil, saya menetapkan this.nav.setRoot(Featured); Semua berfungsi dengan baik hingga sekarang. Saya membuka halaman Unggulan yang memungkinkan menu samping dengan halaman berbeda dan saya dapat menavigasi ke semuanya tanpa masalah.

Langkah 2: Unggulan mengaktifkan menu samping dari App.ts/html, di sana saya memiliki tombol logout yang memanggil unauth.
Unauth melakukan beberapa unauth Firebase dan kemudian:

this.menu.close();    
let nav = this.app.getComponent('nav');    
nav.setRoot(Welcome); 

Langkah 3: Login lagi sama seperti pada langkah 1. Semua baik-baik saja sampai sekarang.

Langkah 4: Buka menu samping, pilih salah satu halaman dari menu samping, navigasi tidak muncul. sidemenu ditutup tetapi halaman tetap sama, tombol ikon navbar menghilang dan tidak ada navigasi yang terjadi.
kode halaman terbuka:

  openPage(page) {
    //1. Loop through and set active attribute to False if it doesn't match.
    //   Set to True if it matches page title
    for(var i = 0; i < this.NavPages.length; i++) {
      if(this.NavPages[i].title == page.title) this.NavPages[i].active = true;
      else this.NavPages[i].active = false;
    }
    for(var i = 0; i < this.ActivityPages.length; i++) {
      if(this.ActivityPages[i].title == page.title) this.ActivityPages[i].active = true;
      else this.ActivityPages[i].active = false;
    }
    for(var i = 0; i < this.PreferencesPages.length; i++) {
      if(this.PreferencesPages[i].title == page.title) this.PreferencesPages[i].active = true;
      else this.PreferencesPages[i].active = false;
    }

    //2. close the menu when clicking a link from the menu
    this.menu.close();
    //3. navigate to the new page if it is not the current page
    let nav = this.app.getComponent('nav');
    nav.setRoot(page.component);
  }

Perilaku apa yang Anda harapkan?

Saya mengharapkan navigasi terus terjadi, mirip dengan apa yang terjadi pada langkah 1.

Langkah-langkah untuk mereproduksi:
Langkah-langkah untuk mereproduksi termasuk di atas.

Code included above.

Informasi lain: (mis. pelacakan tumpukan, masalah terkait, saran cara memperbaikinya, tautan stackoverflow, tautan forum, dll)
Sayangnya tidak ada kesalahan yang dilemparkan. Saya tidak melihat kesalahan di log konsol.

Versi ionik yang mana? 2.x

Jalankan ionic info dari terminal/cmd Prompt: (rekatkan output di bawah)

Your system information:

Cordova CLI: 6.0.0
Gulp version:  CLI version 3.9.0
Gulp local:   Local version 3.9.1
Ionic Version: 2.0.0-beta.3
Ionic CLI Version: 2.0.0-beta.19
Ionic App Lib Version: 2.0.0-beta.9
ios-deploy version: 1.8.2 
ios-sim version: 5.0.3 
OS: Mac OS X El Capitan
Node Version: v0.12.7
Xcode version: Xcode 7.2.1 Build version 7C1002 

Terima kasih.

reply

Komentar yang paling membantu

Mengapa masalah ini ditutup? Navigasi tampaknya benar-benar rusak. Jika saya mendorong halaman dengan formulir di dalamnya, itu juga tidak akan berfungsi.

Semua 100 komentar

Saya perhatikan berikut ini: 2 halaman ion hadir sekaligus di dom.
screen shot 2016-03-18 at 3 34 03 pm

Yang saya navigasikan adalah "explore" yang memiliki z-index(92) yang lebih rendah daripada halaman "featured". Oleh karena itu saya harus di jelajahi tetapi "unggulan" dilapis di atas "Jelajahi" dengan indeks-z 93.

Saya mengalami masalah yang sama tetapi dalam kasus saya, saya bahkan tidak dapat dialihkan setelah masuk.

Jika saya sudah login dan masuk ke tampilan login, nav.setRoot(TabsPage) dijalankan dengan sempurna.

Tetapi jika saya masuk dengan facebook setelah mendapatkan probile pengguna nav.setRoot(TabsPage) tidak melakukan apa-apa. Selain itu, nav.push(TabsPage) juga tidak melakukan apa-apa, tetapi jika saya melakukan nav.push(Main) di mana Main adalah salah satu tab saya, dijalankan dengan benar, tetapi saya tidak memiliki tabbar dan tombol kembali muncul, jelas.

Juga jika saya melakukan nav.setRoot(Main) itu berfungsi dengan benar, tetapi saya mendarat di tab tanpa tabbar dan dengan tombol kembali.

Saya menambahkan beberapa informasi. Saya melihat di dokumen bahwa setRoot mengembalikan janji, jadi saya melakukan ini:

this.nav.setRoot(TabsPage)
  .then(data => {
      console.log(data);
  }, (error) => {
      console.log(error);
  })

Ini melempar true ketika saya mendarat di halaman login dan saya sudah login, tetapi tidak melempar apa pun ketika saya login dengan facebook, jadi sepertinya janji itu tidak pernah diselesaikan.

Oke, pembaruan lain. Jika Anda pergi ke inti Ionic2 ke component/nav/nav-controller.js dalam fungsi setPages yang dipanggil dari setRoot, panggilan balik transisi tidak pernah dieksekusi.
Jika Anda mengikuti aliran fungsi yang disebut: setRoot -> setPages -> _transition -> _render -> _postRender

Dalam fungsi _render:

this.loadPage(enteringView, null, opts, function () {
    if (enteringView.onReady) {
        // this entering view needs to wait for it to be ready
        // this is used by Tabs to wait for the first page of
        // the first selected tab to be loaded
        enteringView.onReady(function () {
            enteringView.loaded();
            _this._postRender(transId, enteringView, leavingView, isAlreadyTransitioning, opts, done);
        });
    }
    else {
        enteringView.loaded();
        _this._postRender(transId, enteringView, leavingView, isAlreadyTransitioning, opts, done);
    }
});

Kode saya masuk enteringView.onReady dan panggilan balik tidak pernah dieksekusi.

Jika saya hanya memanggil metode _postRender sebelum menunggu enteringView.onReady aplikasi saya berfungsi dengan baik, tetapi sangat kotor.
Masalahnya sepertinya menunggu halaman tab siap. Saya pikir itu tidak pernah siap atau tidak pernah mendapatkan keadaan siap dengan baik.

Mungkinkah ini sesuatu dengan kode saya? Atau mungkin bug?

Terima kasih!

Saya memiliki masalah yang sama dengan Google atau Facebook auth

@privetr ini tampaknya telah diperbaiki dengan beta4. Bisa tolong dicek? Milik saya bekerja dengan baik sekarang.

@jorchg Bisakah Anda memeriksanya juga? bila ada kesempatan :)

Halo semua! Sepertinya ini telah diperbaiki dalam versi beta.4 saya akan menutup masalah ini, tetapi jika Anda masih mengalami masalah ini, jangan ragu untuk berkomentar!

Saya masih mengalami masalah ini. Saya tidak bisa mendapatkan nav untuk Push atau setRoot ke TabsPage saya setelah janji masuk Facebook.

Cordova CLI: 6.1.1
Gulp version:  CLI version 1.2.1
Gulp local:   Local version 3.9.1
Ionic Framework Version: 2.0.0-beta.4
Ionic CLI Version: 2.0.0-beta.24
Ionic App Lib Version: 2.0.0-beta.14
ios-deploy version: 1.8.5
ios-sim version: 5.0.8
OS: Mac OS X El Capitan
Node Version: v5.9.1
Xcode version: Xcode 7.3 Build version 7D175

Saya juga mengalami situasi di mana jika saya memanggil nav.setRoot(x), halaman baru tidak benar-benar muncul. Namun, jika saya memfokuskan bidang input di halaman saat ini, itu menghilang dan menampilkan halaman yang benar.

Selain itu, jika saya mendorong ke tumpukan alih-alih setRoot, animasi tidak terjadi sampai saya memfokuskan bidang input.

Permasalahan yang sama.

Sunting: Baru saja menukar navigasi di aplikasi saya ke menu samping dan semuanya berfungsi dengan baik. Jadi tabnya dibor pada beta 4 FYI.

@daveshirman apakah Anda menggunakan tab untuk bernavigasi? Mungkin terkait dengan tab, masalah saya terkait dengan menu samping. Namun mereka berdua menggunakan navcontroller, tidak yakin mengapa itu akan berhasil untuk saya dan bukan untuk Anda.. Mungkin menghasilkan plunker atau membuka masalah baru dan tim ionic akan dapat membantu.

Saya mengalami masalah yang sama: nav.setRoot(MyComponent) sepertinya tidak melakukan apa-apa. Saya menjalankan aplikasi di Android menggunakan --live-reload , dan ada peringatan tentang beberapa peristiwa yang tidak dipecat:

0     195445   log      deviceready has not fired after 5 seconds.
1     195457   log      Channel not fired: onDOMContentLoaded

Saya juga tidak dapat menguji kode di browser karena ini tentang menampilkan halaman tertentu saat perangkat offline.

Jadi saya akhirnya mencoba menjalankan kode saya di Android, tetapi tanpa memuat ulang langsung, dan itu berfungsi dengan baik.

Jadi, ada sesuatu tentang mode live reload yang mencegahnya bekerja. Menggunakan Beta4 sebagai ketergantungan saya, dan versi CLI 2.0.0-beta25.

Saya masih mengalami masalah yang saya jelaskan. Saya benar-benar lupa, dan setelah pembaruan ionik itu berhenti berfungsi, jadi saya hanya memodifikasinya lagi seperti yang dijelaskan dalam posting terbaru saya di utas ini.

Haruskah saya membuka masalah lain?

Halo semuanya. Apakah ada yang menemukan perbaikan untuk ini? Saat ini saya menggunakan Ionic [email protected] dan masalahnya masih ada!

Saya menemukan penyebab masalah saya adalah memanggil .pop() ketika hanya setRoot yang dipanggil.

Saya menemukan bahwa memanggilnya dari app.ts saya tampaknya bekerja dengan andal. Memanggilnya dari halaman lain tampaknya gagal.
Selain itu, jika saya tidak berada di halaman root, seperti kedalaman 3 halaman, saya juga memanggil nav.popToRoot() setelah metode setRoot, yang berfungsi:

this.nav.setRoot(xxxx).then(() =>{
    this.nav.popToRoot();
    //....
});

Mengapa masalah ini ditutup? Navigasi tampaknya benar-benar rusak. Jika saya mendorong halaman dengan formulir di dalamnya, itu juga tidak akan berfungsi.

Juga rusak ketika ada jendela modal yang ditampilkan juga.
Pada 13 Juli 2016 3:59 pagi, "scorpnode" [email protected] menulis:

Mengapa masalah ini ditutup? Navigasi tampaknya benar-benar rusak. Jika saya mendorong halaman
dengan formulir di dalamnya juga tidak akan berfungsi.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/driftyco/ionic/issues/5883#issuecomment -232241198,
atau matikan utasnya
https://github.com/notifications/unsubscribe/ANnlXmqTT5pf0i-JZNog5F32j8pB785Qks5qVFSZgaJpZM4H0Jz0
.

Hai, ini masih terjadi pada saya di 2.0.0-beta.10. Saya mendapatkan layar kosong setelah memanggil NavController.setRoot. Hanya terjadi di perangkat iOS

informasi perangkat:

  • model: iPad5,4
  • Versi iOS: 8.3

Saya menghadapi masalah ini di 2.0.0-beta.10 . Saya tidak dapat menavigasi ke halaman berikutnya dengan NavController.setRoot. Kode saya terlihat seperti ini:

this.nav.setRoot(somepage).then(() =>{
     this.nav.popToRoot();
});

informasi perangkat:

  • model: motorala x play
  • versi android: 6

CLI v2.0.0-beta.32.

Masih mengalami masalah dengan
this.nav.setRoot(ListPage)
dari hello-ionic.ts dari aplikasi tutorial pemula.

Saya ingin mencoba login FB yang telah dibuat dengan mudah dengan v2.

Ada orang lain?

[Sunting]
saya menggunakan
import {Nav} from 'ionic-angular';
dari pada
import {NavController} from 'ionic-angular ';

Terselesaikan masalah saya. Semoga itu membantu siapa pun

Memiliki masalah yang sama di sini!
Apakah ada perbaikan sampai sekarang?

Halo semuanya, jika seseorang dapat memberikan plunker yang menunjukkan masalah ini, itu akan luar biasa. Terima kasih telah menggunakan Ionic!

Halo semua! Karena sepertinya sudah lama sejak ada aktivitas tentang masalah ini, saya akan menutupnya untuk saat ini. Jangan ragu untuk berkomentar jika Anda masih mengalami masalah ini. Terima kasih telah menggunakan Ionic!

Maaf tidak menjawab, saya sedang Liburan

Masalah saya tampaknya terkait dengan cordova-plugin-facebook4 https://github.com/jeduan/cordova-plugin-facebook4

Ketika saya memperbarui proyek saya ke beta.10 dan mulai menggunakan pembungkus Facebook dari ionic-native, masalahnya berhenti. Sangat aneh, mengingat pembungkusnya menggunakan plugin yang sama.

Terima kasih banyak!

Tidak masalah, senang sudah diperbaiki untuk Anda!

Hai @jgw96 ! Sayangnya ini sepertinya masih menjadi masalah bagi saya di Beta 10. Anda bisa melihatnya di plnkr di bawah ini. Secara efektif, saya memiliki modal login yang menyetel root ke halaman "Tab" setelah berhasil login. Dari halaman di "Tab" saya memiliki tombol "Logout", yang mengaktifkan peristiwa yang digunakan di app.ts. Di app.ts saya mencoba mengatur root ke "LoginPage", tetapi sepertinya tidak ada yang terjadi. Dalam melihat DOM sambil mengklik "logout" saya dapat melihat hal-hal menyala, dan halaman login ada di bawah tab, tetapi navigasi sepertinya tidak muncul. Ada ide?

http://plnkr.co/edit/n6jCzspnEcjQbl9KF10F

Terima kasih atas waktunya!

Saya mengajukan masalah baru untuk #7593 ini. Berlaku untuk 2.0.0-beta.10 dan 11, mungkin yang lain.

Saya memiliki masalah yang sama dengan beta 11.
Navigasi tampaknya berfungsi dengan baik hingga this.nav.setRoot(xxx) dipanggil. Setelah itu, navigasi bekerja secara acak... Saat mendorong halaman baru, terkadang tidak ada yang terjadi : tampilan tetap pada halaman saat ini alih-alih yang baru. Saat muncul, navigasi tampaknya lain kali muncul dua kali.
Semuanya tampak benar dengan objek NavController dan semuanya menyala secara normal. Tapi sepertinya ada kebingungan di DOM: nilai properti indeks-z untuk tag halaman ion salah dalam kasus ini, sehingga halaman yang salah tetap di atas.

Saya melihat perilaku yang persis sama dengan @Troknus terkait munculnya halaman ganda dan kebingungan DOM.

Juga pertama kali setRoot, kemudian pada navigasi berikutnya, halaman root awal berkedip, seolah-olah belum sepenuhnya dibongkar sebelumnya.

Saya memiliki masalah @Troknus juga, saya mencoba menambahkan kelas dan fungsi halaman pertunjukan secara manual tetapi bukan solusi yang baik.

Saya mencari di semua situs tetapi tidak ada. Saya mencoba semua solusi yang mungkin tetapi semuanya dalam baling-baling.

dalam versi beta 10. Navigasi berjalan dengan sempurna. Mengapa tidak dalam versi beta 11.

Saya juga melihat perilaku yang sama dengan @Troknus .

Kawan, mengalami masalah yang sama seperti yang dikatakan @jorchg .. mengingat kesalahan tab .. itu hanya mendorong ke tab setelah panggilan kedua kali (sepertinya Push terjadi tetapi halaman saat ini masih di atas)

setelah masuk jika saya mencoba untuk mendorong ke tampilan tab tetapi tidak bekerja .. jika saya mendorong ke halaman yang seharusnya ada di tab .. itu berfungsi .. inilah proyeknya

Saya memiliki masalah yang sama dengan @Troknus

@schaergeek diperbarui ke beta 11 dan berhasil .. di sini adalah contohnya https://github.com/mariohmol/ionic2-meteor-messenger-password

Saya mengacungkan jempol pada Troknus, tetapi saya pikir posting lebih jelas.

Navigasi ini adalah masalah nyata.
Kami (dan saya kira banyak orang lain) tidak diizinkan untuk bergerak dalam produksi dengan bug ini.
(Kami bekerja dalam beta 11 sebagai Troknus dan kami memiliki yang sama ...).

Saya melihat plnkr oleh @joshgarwood. Penerbitan acara tampaknya menjadi masalah? Jika alih-alih memublikasikan peristiwa autentikasi agar MyApp melakukan pekerjaan, Anda malah menyetel root melalui instance NavController dalam TabPage, maka itu akan berfungsi. Mencoba mengatur root melalui pendengar acara di MyApp tidak. Jadi bagi saya sepertinya ada masalah dengan berbagai instance NavController yang sedang disuntikkan...? Saya tidak yakin bagaimana DI seharusnya bekerja di sini, tetapi saya merasa konsumen tidak perlu peduli tentang instance NavController mana yang disuntikkan. Jika saya memanggil setRoot(*) maka semuanya akan berfungsi, bukan?

Mengenai masalah Z-index yang dibicarakan oleh @Troknus , Anda semua mungkin tertarik dengan masalah #8042. Meskipun dalam hal ini setRoot(*) tidak dipanggil sama sekali.

Sebenarnya, saya baru saja membaca komentar @jgw96 dan sepertinya Anda tidak seharusnya menggunakan instance NavController acak...?

Namun, itu tidak mengubah fakta bahwa ada bug dengan indeks-Z.

masalah yang sama di sini dengan beta11 ...

Adakah yang punya plnkr berbeda yang akan mereproduksi DOM menjadi bingung atau halaman berkedip? Plnkr oleh @joshgarwood tidak termasuk push atau pops.

@rcjsuen Punya masalah yang sama di Beta10 & Beta11, saya menemukan solusi ini. Tidak yakin apakah setRoot berfungsi sebagaimana dimaksud tetapi ini berfungsi untuk saat ini.

Tidak bekerja

  private initializeApp(): void {
    this.platform.ready().then(() => {

      firebase.auth().onAuthStateChanged(user => {
        if (user) {
          this.nav.setRoot(TabsPage);
        } else {
          this.nav.setRoot(LoginPage);
        }
      });

      StatusBar.styleDefault();
    });
  }
}

Bekerja

 private initializeApp(): void {
    this.platform.ready().then(() => {

      firebase.auth().onAuthStateChanged(user => {
        if (user) {
          this.setRoot(TabsPage);
        } else {
          this.setRoot(LoginPage);
        }
      });

      StatusBar.styleDefault();
    });
  }

  private setRoot(newRootPage: any){
    this.rootPage = newRootPage;
  }
}

@Vanclief Punya masalah yang sama - tetapi bahkan solusi yang Anda usulkan ini tidak berhasil untuk saya.
Kode saya adalah milik Anda untuk memulai - kemudian saya mencoba memutakhirkan ke ionic 2 rc0 dan angular 2.0.1, tetapi itu tidak berfungsi dengan baik dengan firebase (atau angularfire), jadi saya memutar kembali ke:

{
    "@angular/common": "2.0.0-rc.4",
    "@angular/compiler": "2.0.0-rc.4",
    "@angular/core": "2.0.0-rc.4",
    "@angular/forms": "^0.2.0",
    "@angular/http": "2.0.0-rc.4",
    "@angular/platform-browser": "2.0.0-rc.4",
    "@angular/platform-browser-dynamic": "2.0.0-rc.4",
    "@angular/router": "^2.0.0-rc.2",
    "firebase": "^3.3.0",
    "ionic-angular": "2.0.0-beta.11",
    "ionic-native": "1.2.2"
}

menghapus node_modules/ melakukan npm install dan sekarang saya menghadapi masalah ini.

Yang aneh adalah jika saya mengatur this.rootPage ke sesuatu di luar fungsi panggilan balik, maka aplikasi menavigasi ke halaman itu. Misalnya

        this.setRoot(TeamPage);

        firebase.initializeApp(this.firebaseConfig);
        firebase.auth().onAuthStateChanged(user => {
            if (user) {
                this.setRoot(TeamPage); // If there's a user take him to the Teams page.
            } else {
                this.setRoot(LoginPage);  // If there's no user logged in send him to the LoginPage
            }
        });

Akan menavigasi pengguna TeamPage kemudian menavigasi pengguna ke LoginPage (dalam kasus di mana pengguna tidak masuk)

Namun

        firebase.initializeApp(this.firebaseConfig);
        firebase.auth().onAuthStateChanged(user => {
            if (user) {
                this.setRoot(TeamPage); // If there's a user take him to the Teams page.
            } else {
                this.setRoot(LoginPage);  // If there's no user logged in send him to the LoginPage
            }
        });

Tidak akan pernah menavigasi pengguna di mana pun

@Peter-Piper

Saya tidak memperbarui, tetapi saya terus mengalami beberapa masalah yang hilang setelah saya memutakhirkan ke RC0. Untuk salah satu proyek saya, saya juga menggunakan firebase dan mengalami beberapa masalah saat memperbarui tetapi sekarang semuanya berfungsi.

Saya tidak menggunakan AngularFire, tetapi tutorial ini mencakupnya: https://playcode.org/getting-started-with-ionic-2-rc0-firebase-3-angularfire-2/

EDIT: Ini adalah contoh cepat yang saya buat

@Vanclief

Terima kasih, saya sudah mencoba pendekatan ini - dan berhasil. Tetapi fakta bahwa saya harus melakukan peretasan dalam modul simpul yang dikombinasikan dengan ionic RC_0 yang mogok saat menonton file saat melakukan ionic serve membuat saya membatalkan peningkatan dan tetap menggunakan versi yang lebih lama.

Bagaimanapun, saya memang memecahkan masalah yang disebutkan di atas di mana pengaturan halaman root dalam panggilan balik tidak pernah berfungsi kecuali telah diatur sebelumnya, dengan memeriksa apakah firbase.auth.currentUser disetel dan kemudian mengatur rootPage

        const page = firebase.auth().currentUser ? TeamPage : LoginPage;
        this.setRoot(page);

        firebase.auth().onAuthStateChanged(user => {
            // If there's a user take him to the Teams page otherwise send him to LoginPage
            const page = user ? TeamPage : LoginPage;
            this.setRoot(page);
        });

dan kemudian melakukan pemeriksaan dalam metode setRoot sehingga tidak menavigasi ke halaman yang sama dua kali.

Ini juga merupakan peretasan dan tidak mengatasi masalah mendasar. Sayangnya saya tidak punya waktu untuk menyelidiki masalah ini secara mendalam minggu depan.

Ini masih menjadi masalah. Menggunakan this.nav.push(...) berfungsi dengan baik, tetapi menggunakan this.nav.setRoot(...) tidak berfungsi setelah pertama kali. Inilah info ionik saya:

Your system information:

Cordova CLI: 6.3.1
Gulp version:  CLI version 3.9.1
Gulp local:  
Ionic Framework Version: 2.0.0-rc.0
Ionic CLI Version: 2.1.0
Ionic App Lib Version: 2.1.0-beta.1
OS: Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS 
Node Version: v4.6.0

Dari package.json

  "dependencies": {
    "@ionic/storage": "^1.0.3",
    "firebase": "^3.4.1",
    "ionic-angular": "^2.0.0-rc.0",
    "ionic-native": "^2.2.2",
    "ionicons": "^3.0.0"
  },

@jgw96 Mengapa ini ditutup? Jelas ini adalah kasus terbuka karena setRoot tidak berfungsi dengan benar.

@daveshirman , saya menghadapi masalah yang sama, ini bukan masalah navigasi, tapi inilah cara saya menyelesaikannya.

di app.ts saya ada ini

firebase.initializeApp(config);

platform.ready().then(() => {
  firebase.auth().onAuthStateChanged((user) => {
    if (user) {
      // If there's a user take him to the TabsPage page.
      this.rootPage = TabsPage;
    } else {
      // If there's no user logged in send him to the LoginPage
      this.rootPage = LoginPage;
    }
  });
  // Okay, so the platform is ready and our plugins are available.
  // Here you can do any higher level native things you might need.
  StatusBar.styleDefault();
});

pernyataan if di atas mengatakan // Jika ada pengguna SET THE ROOTPAGE TO TabsPage page.
dan jika tidak, itu harus tetap berada di Halaman Login, Anda akan mencatat bahwa jika Anda menggunakan metode login firebase normal, bagian if akan dijalankan (yaitu akan menavigasi ke halaman root, tetapi saat menggunakan Facebook, bagian lain akan dijalankan (yaitu tetap di Halaman masuk

Saya menyelesaikannya seperti ini.
masuk facebook() {

//masuk ke facebook
Facebook.login(['email']).lalu((hasil=>{
// setel kredensial, Anda akan menggunakan ini untuk masuk ke firebase
biarkan kredensial = firebase.auth.FacebookAuthProvider 'kredensial'
// masuk ke firebase, inilah yang mencegah navigasi bekerja, mengarah ke jalur LAINNYA dari //pernyataan di app.ts untuk dieksekusi
kembalikan firebase.auth().signInWithCredential(kredensial);
})).lalu((pengguna)=>{
//alert(firebase.auth().currentUser.uid);
this.userProfileRef.child(firebase.auth().currentUser.uid).set({
id:firebase.auth().currentUser.uid,
email: pengguna. email,
namatampilan:namapengguna.namatampilan,
profilePictureURL:user.photoURL
});

   this.navCtrl.setRoot(TabsPage);
}).catch((error)=>{
  alert(error);
})

}

yang terjadi pada kode di atas adalah,
Pertama Anda harus masuk ke facebook, yang saya lakukan dengan
Facebook.login(['email']).lalu((hasil=>

Kedua Anda perlu mengatur kredensial yang akan membantu Anda masuk ke firebase menggunakan accessToken yang dikirimkan kepada Anda oleh hasil masuk Facebook yang saya lakukan di sini
biarkan kredensial = firebase.auth.FacebookAuthProvider 'credential' ;
Ketiga Anda harus masuk ke firebase dengan kredensial yang Anda atur, itulah yang saya lakukan di sini
kembalikan firebase.auth().signInWithCredential(kredensial);
CATATAN: ini alasan yang tepat mengapa this.navCtrl.setRoot(TabsPage); tidak berfungsi (karena pengguna belum masuk ke firebase.

jadi sekarang Anda dapat menavigasi ke rootPath di jalur kode then().

dan mohon pastikan appId dan appSecrete facebook Anda dikonfigurasi di firebase>authentication>panel facebook.

HARAP MEMBANTU INI

@OyebisiJemil Terima kasih atas penjelasan panjang Anda tentang apa yang Anda lakukan. Tapi maksud saya saya mengalami masalah yang sama secara konseptual di setRoot itu tidak berfungsi dengan baik, tidak dengan menggunakan facebook atau apa pun. Terima kasih sekali lagi. Masalah ini tidak boleh ditutup, kecuali ada pembukaan lain dengan deskripsi yang sama.

Yang ternyata ada:

https://github.com/driftyco/ionic/issues/8453

Saya juga menghadapi masalah ini dengan keadaan yang sangat mirip. Dalam kasus saya, beralih ke Push(view) alih-alih setRoot(view) menyelesaikan masalah dan tidak benar-benar mendukung aliran aplikasi saya.

Saya memiliki masalah yang sama. nav.push(view) berfungsi dengan baik tetapi nav.setRoot tidak berfungsi. Ada yang punya saran?

Saya masih menghadapi masalah yang sama sampai hari ini di build terbaru:

keluar() {
this.authData.logoutUser().then(() => {
this.nav.setRoot(Halaman Masuk);
});
}

tidak bekerja. Tolong bantu. terima kasih. Lis

Gunakan push alih-alih setRoot...

@jgw96 , @adamdbradley ini masih menjadi masalah besar. Harap buka kembali dan tetapkan tonggak sejarah. Banyak orang mengalami masalah ini, termasuk saya sendiri dan itu adalah fungsi penting untuk sebuah aplikasi.

@dejancencelj itu bukan solusi untuk masalah ini.

@lisaiceland untuk mengatasi masalah ini saya mengikuti saran ini:
https://forum.ionicframework.com/t/cant-access-rootnav-after-upgrade-to-beta-11/59889/15?u=niallr

@niallr12 @daveshirman apakah ini masih menjadi masalah di RC3?

@manucorporat Saya tidak yakin apakah ini masalah di RC3 tapi saya tidak melihat perbaikannya di changelog. Saya senang dengan perbaikan saya dan merasa ini adalah pendekatan yang lebih baik secara keseluruhan.

Saya dapat menguji Anda di RC3 jika Anda mau.

@niallr12 yah, saya tidak pernah bisa mereproduksi masalah khusus ini. Tetapi saya telah menghabiskan waktu berminggu-minggu untuk memperkuat NavController, dengan banyak perbaikan dan pengujian kecil. Seperti ini: Kasus Terburuk yang menekankan tumpukan navigasi dengan aliran gila.

Saya akan sangat membantu jika Anda dapat menguji bug ini terhadap RC3.

@manucorporat saya masih bisa mereplikasi masalah di rc3. Dalam kasus khusus saya, sepertinya tidak mengabaikan tampilan saat ini ketika saya mengatur root. Jika saya mengabaikan tampilan saat ini dan kemudian mengatur root, itu berfungsi dengan baik. Mendorong tampilan berfungsi dengan baik.

Hai,

Saya tidak yakin apakah jawaban saya akan membantu siapa pun karena saya belum membaca semua pesan sebelumnya, tetapi ketika saya menemukan masalah seperti itu di proyek saya, saya menyelesaikannya dengan merujuk ke tumpukan navigasi induk, untuk alasan itu saya dapat kembali ke halaman selamat datang misalnya:

Halaman selamat datang (halaman root)

gotoFeature(): void {
  this.navCtrl.push(feature);
}

Halaman fitur ( dengan tab )

logout(): void {
  this.navCtrl.parent.parent.pop() //  back to welcome
}

Itu perlu ditangani dengan cara itu karena tab memiliki tumpukan navigasi sendiri yang berarti bahwa setiap penggunaan setRoot di tingkat objek navigasi tab akan dialihkan ke halaman yang berbeda tetapi blok tab di footer akan tetap terlihat.

Mengapa masalah ini ditutup? Saya memiliki masalah yang sama. Saya menggunakan fungsi setRoot di penyedia sampel saya. SetRoot aplikasi dan halaman yang diubah tetapi navigasi (menu) dinonaktifkan setelah selesai.

Ini kode saya di penyedia

private _leaveGroup(user: modelUser, room: modelRoom): Promise<any> {
    return new Promise((resolve, reject) => {
      let loading = this.loadingCtrl.create({dismissOnPageChange: false});
      loading.present();

      this.ref.child(room.id).child('users').child(user.id).remove()
        .then(() => this.navCtrl.setRoot(PageDashboard))
        .then(() => loading.dismiss())
        .then(() => resolve())
        .catch(err => loading.dismiss().then(() => reject(err)));
    });
}

sekian info dari saya

Cordova CLI: 6.3.1
Versi Kerangka Ionik: 2.0.0-rc.3
Versi CLI Ionik: 2.1.4
Versi Lib Aplikasi Ionic: 2.1.2
Versi Skrip Aplikasi Ionic: 0.0.45
versi penyebaran ios: 1.9.0
versi ios-sim: 5.0.9
OS: Mac OS X Sierra
Versi Node: v6.9.1
Versi Xcode: Xcode 8.1 Build versi 8B62

Saya memiliki masalah yang sama. Namun setelah saya memastikan bahwa pada waktu tertentu jika hanya pernyataan setrroot yang dieksekusi semuanya bekerja dengan sempurna. Tetapi untuk berbagai alasan jika beberapa pernyataan setroot dieksekusi pada waktu tertentu yaitu sebelum rendering, Ionic membuat beberapa halaman karena navigasi digantung dalam kasus saya.

Tampaknya masalah ini bermutasi menjadi sesuatu yang asing di RC4. Jenis masalah yang sama kecuali bahwa ketika mengatur root sekarang dari halaman login yang dicontohkan ke menu/dasbor, halaman login tetap berada di tumpukan tampilan yang menampilkan tombol kembali di header, menyebabkan semua jenis kekacauan

Saya terpaksa melakukan location.reload untuk memperhitungkan ini yang saya kira bukan pengalaman pengguna yang buruk karena hanya terjadi selama pendaftaran pengguna baru, tapi tetap saja ... Saya tidak mengerti mengapa masalah ini ditutup karena banyak orang masih mengalami masalah.

Saya membuat acara untuk logout.

// app.component.ts
events.subscribe('logout', () => {
  localStorage.removeItem('token');
  this.rootPage = LoginPage;
 });

sekarang keluar:

// pages/home/home.ts
  logout() {
    this.events.publish('logout');
  }

Halo semuanya. Apakah ada yang menemukan perbaikan untuk ini? Saat ini saya menggunakan Ionic 2.0.0-rc.4 dan masalahnya masih ada!

Hai,

//import kelas-kelas ini
 import { Komponen, ViewChild } dari '@angular/core';
 import { Platform, MenuController, Nav } dari 'ionic-angular';

 kelas ekspor MyApp {
 //Setel properti ini
 @ViewChild(Nav) nav: Nav;

 //menerapkan metode ini, dan bekerja dengan sempurna
 openPage pribadi (halaman: apa saja): any {
 //validasi token 
 this.loggedIn = this.service.canActivate();
 if (!ini.login) {
 //belum masuk 
 this.nav.setRoot(Halaman Masuk);
 } kalau tidak {
 //masuk
 this.nav.setRoot(Halaman Beranda);
 }
 this.menuCtrl.close();
 }

Pelukan!

Aplikasi Saya: https://github.com/siteslave/chiangmai-demo-app/blob/master/src/pages/main/main.ts#L96 -L100

import {
  ...
  App,
  ...
} from 'ionic-angular';

//=====================//
 logout() {
    localStorage.removeItem('token');
    let nav = this.app.getRootNav(); 
    nav.setRoot(LoginPage);
  }

Adakah yang menemukan setidaknya solusi untuk ini?

Masalah yang sama dengan @joshuaohana.

Jika saya melakukan setRoot SEBELUM login facebook, semuanya berfungsi seperti yang diharapkan.
Jika saya melakukan setRoot AFTER facebook, saya mendapatkan perilaku yang sama dengan @joshuaohana.

Terima kasih.

(Baru saja menemukan duplikat ini: https://github.com/driftyco/ionic/issues/6297)

buat acara untuk pekerjaan logout.

juga, temukan di bawah ini penjelasan detail tentang nav dengan solusi kerja lainnya

https://webcake.co/exploring-nav-hierarchy-in-the-ionic-2-tabs-page/

bagian paling berharga dari kode yang disisipkan di bawah ini.

impor { Aplikasi } dari 'ionic-angular';
...
konstruktor(aplikasi _pribadi: Aplikasi) {}

keluar() {
...

    // Now I'll access the root NavController for the app,
    // and use that to reset the nav stack

    const root = this._app.getRootNav();
    root.popToRoot();

    // since I only have two items in the root NavController,
    // I could also have run root.pop() instead

}
...

Mungkin beberapa dari Anda melakukan kesalahan yang sama seperti saya:

Saya menggunakan navigasi melalui "setRoot" tetapi melewatkan bahwa pada saat yang sama pengikatan "[root]=.." masih tersedia di template HTML. Menyinkronkan dua info lagi memperbaiki masalah saya. Dalam hal ini saya menghapus pengikatan model dan mengelola root hanya melalui API.

Salam, Michael

Hai kawan,

@ly-dev solusi bekerja untuk saya. Saya baru saja melakukan this._app.getRootNav().setRoot(EntryPage); dan berhasil.

Pertama, impor Nav dari ionic-angular, tempat yang sama dengan navController
import { App, NavController } from 'ionic-angular';

kemudian berikan di konstruktor Anda:
constructor(public navCtrl: NavController, public appCtrl: App)

sekarang Anda dapat mengakses rootnav:
this.appCtrl.getRootNav().setRoot(YourComponent);

@AmitPoojary Solusi itu tidak berhasil. Saat pengguna membuka banyak tab.

Contoh : Tab Beranda dengan banyak halaman. Ketika pengguna mengklik ke beberapa halaman. Kemudian tidak kembali tetapi beralih ke tab Akun & kemudian keluar, itu akan tetap berada di tab Akun hingga disegarkan.

Saya sudah tahu jika pengguna mengklik tab Beranda & tidak melangkah lebih jauh, itu akan mengeluarkan pengguna dengan benar.

Saya pikir ini semua tentang mendapatkan banyak tab di dom & getRootNav tidak akan mundur sejauh itu ketika pengguna masuk ke halaman kedua di tab beranda.

Ini masih menjadi masalah.

Ya, masih menjadi masalah bagi saya karena saya menggunakan Tab sebagai halaman utama aplikasi. Dengan memanggil _navCtrl.setRoot() dari salah satu halaman di dalam tabComponent, hanya halaman itu yang disetel ke rootPage tetapi antarmuka tab di bagian bawah tetap di tempatnya. Ini memungkinkan saya untuk tetap mengakses halaman lain di tab!

image

Solusi yang tepat untuk ini adalah:

let _nav = this.app.getRootNav(); _nav.setRoot(LoginPage);

atau satu baris

this.app.getRootNav().setRoot(LoginPage);

Saya juga memiliki masalah serupa pada aplikasi baru saya, aplikasi saya hanya berfungsi pertama kali mendorong ke perangkat, di mana saya membuat koneksi soket dan melakukan beberapa komunikasi soket. Saya mematikan aplikasi, memutuskan sambungan dari komputer pengembangan saya, menjalankan kembali aplikasi, saya tidak melihat tidak ada aktivitas konektivitas di sisi server. Saya belum menerapkan rekomendasi uiktiomasfeliz, saya akan mencobanya nanti hari ini. Tapi hanya kepala ke atas.

Ya. Saya juga mencapai hal yang sama dengan:

this.app.getRootNav().setRoot(SetupPage);

Namun, itu merusak jalur gambar pada perangkat...

(getRootNav) tidak digunakan lagi dan akan dihapus pada rilis utama berikutnya. Gunakan getRootNavById sebagai gantinya.

Jadi ... kesalahan ini tidak pernah diperbaiki dan tambalan sebelumnya tidak berfungsi lagi.. :/

this.app.getRootNav().setRoot(LoginPage);

Ini tidak bangun untuk saya ...

ini diselesaikan dengan rilis 3.5.3 untuk saya setidaknya

wah, 3.5.3 tidak memperbaikinya untuk saya.

teman-teman dan masih mengalami masalah sidebar ini tidak berfungsi setelah setRoot();

saya hanya menggunakan ini : this.navCtrl.setRoot(HomePage);

Saya mencoba semua solusi di sini tetapi masih mengalami masalah ini
Ionik 3.10.3

saya memecahkan seperti itu

impor Aplikasi

impor { IonicPage, NavController, Nav, App } dari 'ionic-angular';

DAN sekarang gunakan

const root = this.app.getRootNav();
root.popToRoot();
root.setRoot("LoginPage");

Halo, saya sedang menguji aplikasi hello world di iPhone4 dan beberapa perangkat lain dengan Android.

Versi Ionic dan CLI terakhir.

Masalah besar utama adalah dengan iPhone, panggilan ke setRoot tidak berfungsi.

batalkan onGoClick(){
// baris ini TIDAK APA-APA dan tidak ada kesalahan yang terjadi.
this.navCtrl.setRoot(Halaman Beranda);

// baris ini TIDAK APA-APA dan tidak ada kesalahan yang terjadi.
this.app.getRootNav().setRoot(HomePage);
}

ini juga TIDAK BEKERJA

var root = this.appCtrl.getRootNav();
root.setRoot(Halaman Beranda);
root.popToRoot();

Salam.

Hai @alemdg Saya pikir itu adalah cara Anda memanggil rute, misalnya jika Anda mendefinisikan seperti teks atau seperti objek, apa pun,

jika Anda ingin menghindari masalah, panggil seperti teks ( "HomePage" ) dan buat variabel ini

const root = this.app.getRootNav();

dan panggil metode berikut

const root = this.app.getRootNav();
root.popToRoot();
root.setRoot("Halaman Beranda");

impor objek ini

import { IonicPage, NavController, NavParams, Nav, App } dari 'ionic-angular';

konstruktor (
aplikasi publik: Aplikasi
) {

pertama adalah popToRoot dan kedua mendefinisikan root baru ;)

batalkan onGoClick(){
// baris ini TIDAK APA-APA dan tidak ada kesalahan yang terjadi.
this.navCtrl.setRoot("Halaman Beranda");

// baris ini TIDAK APA-APA dan tidak ada kesalahan yang terjadi.
root.popToRoot();
root.setRoot("Halaman Beranda");
}

ini juga TIDAK BEKERJA

const root = this.appCtrl.getRootNav();
root.popToRoot();
root.setRoot("Halaman Beranda");

@spidermay Terima kasih atas jawabannya tetapi masih tidak berfungsi.

saya mengimpor
import { IonicPage, NavController, NavParams, Nav, App } dari 'ionic-angular';

dan dieksekusi
const root = this.app.getRootNav();
root.popToRoot();
root.setRoot("Halaman Beranda");

tapi kalo di klik 2 kali berhasil....

seperti ada penyegaran yang hilang....

Saya melihat ini di 3.7.1.

Gunakan kode berikut ini harus berfungsi atau memberi Anda pesan kesalahan

this.menu.close();
this.nav.setRoot(HomePage).then(()=>{
this.nav.popToRoot();
}).catch(err=>{
waspada(err.toString());
});

Hai @FatehiAlqadasi , terima kasih.
Terjadi kesalahan, ini lognya.

berbuat salah:
C@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21236
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21702
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21967
kurangi@[kode asli]
O@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21927
format@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:12952
transform@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:14339
Ce@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:3:23348
Yaitu@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:1046
Te@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:518
no@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:5140
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:42:25653
updateRenderer@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:4409
Se@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:328
Kami@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:3041
Ge@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:2439
Se@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:336
detectChanges@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:6:5799
_viewAttachToDOM@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:22059
_transition@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:23173
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:19213
panggilan@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9288
onInvoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1143
panggil@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9231
run@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:4458
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:14079
panggilTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9972
onInvokeTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1047
panggilTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9900
runTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:5153
o@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:2210
panggil@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:10986
berbuat salah:
C@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21236
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21702
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21967
kurangi@[kode asli]
O@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21927
format@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:12952
transform@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:14339
Ce@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:3:23348
Yaitu@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:1046
Te@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:518
no@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:5140
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:42:25653
updateRenderer@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:4409
Se@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:328
Kami@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:3041
Ge@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:2439
Se@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:336
detectChanges@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:6:5799
_viewAttachToDOM@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:22059
_transition@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:23173
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:19213
panggilan@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9288
onInvoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1143
panggil@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9231
run@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:4458
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:14079
panggilTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9972
onInvokeTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1047
panggilTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9900
runTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:5153
o@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:2210
panggil@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:10986
dispatchEvent@[kode asli]
handleTapPolyfill@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:18:6423
pointerEnd@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:18:5144
[kode asli]
handleTouchEnd@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:19:19943
[kode asli]

@tonyawad88
Ini memperbaiki masalah

logout(){
this.navCtrl.setRoot("LoginPage");
this.navCtrl.push("LoginPage");

}

Bug berusia 2 tahun, masih tidak ada yang berani memperbaikinya ... Saya mengalami masalah yang sama di Ionic 3

Halo semua,

Saya bisa mendapatkan semua data saya dari halaman root juga menavigasi tetapi tidak dapat menavigasi halaman keluar dari tab, terbuka seperti anak tab.

Mencoba semua kemungkinan untuk menyelesaikannya tetapi tidak ada operasi yang berhasil.

Tab halaman tempat data saya.
1st

Setelah mengklik data yang diambil itu akan mengarahkan ke halaman detail data, itu dialihkan tetapi di dalam halaman tab. seperti ini...

2nd

bantu aku,

Terima kasih sebelumnya.

Saya telah memperhatikan bug ini pada [email protected]. Tampaknya terkait dengan DeepLinkConfig, karena jika saya menghapusnya dari app.module saya, maka saya dapat memanggil nav.setRoot() sepanjang hari tanpa masalah. Hipotesis saya adalah, setelah panggilan setRoot() berikutnya, logika tautan dalam masuk ke keadaan di mana tumpukan nav berubah sebelum window.location, kode tautan dalam melihat bahwa window.location menunjuk ke halaman yang tidak ada di stack (karena Anda telah menyetelRoot() jauh darinya), sehingga mengembalikan Anda ke halaman yang baru saja Anda coba navigasikan.

Terlepas dari itu, berikut adalah solusi yang bekerja untuk saya.

await this.nav.push(page, params);
this.nav.remove(0, this.nav.length() - 1);

Terima kasih banyak @jknisley ,
Saya memecahkan masalah saya dengan ini.

detailEvent(eventItem) {
    this.app.getRootNav().push(DetailEventsPage, { itemUp: eventItem });  
  }

Kode ini akan mengarahkan saya ke halaman baru dan tata letak yang berbeda (bukan di bawah halaman tab) juga.

Hanya meninggalkan ini di sini untuk anak cucu. Fungsi logout ini tampaknya berfungsi untuk saya tanpa efek samping. Terima kasih kepada @uiktiomasfeliz.

paket cli: (/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.2
ionic (Ionic CLI) : 3.20.0

paket global:

cordova (Cordova CLI) : 7.1.0

paket lokal:

@ionic/app-scripts : 3.1.2
Cordova Platforms  : android 6.3.0 ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2

Sistem:

ios-deploy : 1.9.2
Node       : v8.9.1
npm        : 5.7.1
OS         : macOS High Sierra
Xcode      : Xcode 9.3 Build version 9E145
async logOut() {
    await this.authProvider.logout();
    await this.app.getRootNav().setRoot('LoginPage');
  }

Ini adalah cara yang saya temukan untuk mengatur tumpukan nav baru dan menghapus tumpukan nav lama. Ini dilakukan untuk sudut ion 3.9.2

this.navCtrl.remove(0, this.navCtrl.length() - 1);
this.navCtrl.insert(0, MainPage);
this.navCtrl.pop();

Terima kasih untuk masalah ini! Masalah ini sedang dikunci untuk mencegah komentar yang tidak relevan dengan masalah asli. Jika ini masih menjadi masalah dengan versi terbaru Ionic, harap buat masalah baru dan pastikan template terisi penuh.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat