2017-12-11 85 views
5

ऐप सरल है, यह साइड मेनू और टैब को जोड़ता है। मैंने सोचा कि यह बेकार ढंग से काम करता है, लेकिन जब तक मुझे पता चला कि root page पर नेविगेट करने के बाद ब्राउज़र पिछले बटन को मारना एनएवी बार की अजीब झटके का कारण बनता है। रूट पेज से वापस टैब्ड पेज पर नेविगेट करने से अजीब झिलमिलाहट

यह output मैं अब तक हो रही है है।

Menu.ts

import { Component,ViewChild } from '@angular/core'; 
import { IonicPage, NavController, NavParams, Nav } from 'ionic-angular'; 

export interface PageInterface { 
    title: string; 
    pageName: string; 
    tabComponent?: any; 
    index?: number; 
    icon: string; 
} 

// Am I doing some mistakes in the following block? 
@IonicPage({ 
}) 
@Component({ 
    selector: 'page-menu', 
    templateUrl: 'menu.html' 
}) 

export class MenuPage { 

    rootPage ="TabsPage"; 

    @ViewChild(Nav) nav: Nav; 

    pages: PageInterface[]= [ 
     { title:'Tab 1', pageName: 'TabsPage', tabComponent: 'HomePage', index: 0, icon:'home' }, 
     { title:'Tab 2', pageName: 'TabsPage', tabComponent: 'SchedulePage', index: 1, icon:'timer' }, 
     { title:'Tab 3', pageName: 'TabsPage', tabComponent: 'CasesPage', index: 2, icon:'briefcase' }, 
    { title:'Non-Tab', pageName: 'SplashPage', icon:'information-circle' } 
     ] 

    constructor(public navCtrl: NavController, public navParams: NavParams) { 
    } 

    openPage(page: PageInterface) { 
    let params = {}; 

    if (page.index) { 
     params = { tabIndex: page.index}; 
    } 

    if (this.nav.getActiveChildNavs().length && page.index != undefined) { 
     this.nav.getActiveChildNavs()[0].select(page.index); 
     console.log('Else executed umdefined'); 
    } else { 
     // This is where I set new root page if it is not a tabbed page. 
    this.nav.setRoot(page.pageName, params).catch((err: any) => { 
     console.log(`Didn't set nav root: ${err}`); 
     }); 
    } 
    } 

    isActive(page: PageInterface) { 
    let childNav = this.nav.getActiveChildNavs()[0]; 

    if (childNav) { 
     if (childNav.getSelected() && childNav.getSelected().root === page.tabComponent) { 
     return 'primary'; 
     } 
     return; 
    } 

    if (this.nav.getActive() && this.nav.getActive().name === page.pageName) { 
     return 'primary'; 
    } 
    return; 
    } 

    ionViewDidLoad() { 
    console.log('MenuPage'); 
    } 
} 

Tabs.ts

@IonicPage({ 
    segment: 'page-tabs' 
}) 
@Component({ 
    templateUrl: 'tabs.html' 
}) 
export class TabsPage { 

    tab1Root= 'HomePage'; 
    tab2Root= 'SchedulePage'; 
    tab3Root= 'CasesPage'; 
    myIndex: number; 

    constructor(public navCtrl: NavController, public navParams: NavParams) { 
    } 

} 

अगर जानकारी पर्याप्त नहीं है पूरी परियोजना उपलब्ध here है।

अद्यतन मैं स्पष्ट व्याख्या नहीं कर सकते, लेकिन आप परियोजना चलाने के लिए और यूआरएल निरीक्षण करने के लिए के रूप में आप एक गैर टैब्ड को टैब वाले पेज मुद्दा नेविगेशन के इतिहास से हो रहा है से स्विच की कोशिश करता है, तो।

+0

क्या आपने किसी डिवाइस पर परीक्षण किया है? – ewizard

+0

क्या कोई कारण है कि आप 'navCtrl' के बजाय' @ViewChild (Nav) nav: Nav; 'का उपयोग करते हैं? – ewizard

+0

@ जादूगर ने इसे आयनिक देवपैप पर परीक्षण किया और झिलमिलाहट होती है। क्रोम के साथ ही। –

उत्तर

0

अपने app.component.ts फ़ाइल में, जैसा कि

rootPage rootPage मान सेट: 'MenuPage' rootPage मूल्य

और अपने menu.ts फ़ाइल में, सेट के रूप में

rootPage: 'होमपेज' (या जो भी पेज आप टैब में दिखाना चाहते हैं)।

यह दृष्टिकोण मेरे लिए ठीक काम करता है

+1

यह समस्या का समाधान नहीं करता है। ऐसा लगता है कि जवाब देने से पहले आपने सवाल या स्रोत का पूरी तरह से मूल्यांकन नहीं किया है। –

संबंधित मुद्दे