2017-10-13 7 views
1

私のアプリはsidemenu +タブがあり、構造が https://devdactic.com/ionic-side-menu-tabs/イオンでapp.module内の現在アクティブなタブ名を取得するにはどのように3

Menu.tsに似ている私のアプリのルートであり、それは、そのモジュール内にありこれは私がapp.componentのコンストラクタ内で現在アクティブなタブを取得したいと私はそれのどれもが作業していない以下の方法やいくつかの他

this.nav.getActive().component 
this.nav.getActive().component.tabRef.getSelected().root 

like this 
    this.app.viewDidEnter.subscribe((evt) => { 
this.nav.getActive().component 

    }); 

を試してみたタブページに

をロードしています。現在アクティブなページ名の代わりに常にTabsPageを返します。

タブページ

export class TabsPage { 

    tab1Root: any = 'HomePage'; 
    tab2Root: any = 'ProductsPage'; 
    tab3Root: any = 'DynamicProductsPage'; 
    myIndex: number; 

    constructor(public navCtrl: NavController, public navParams: NavParams) { 
    this.myIndex = navParams.data.tabIndex || 0; 
    } 

} 

タブテンプレート

<ion-tabs #myTabs [selectedIndex]="myIndex" [color]="'primary'"> 
    <ion-tab [root]="tab1Root" tabTitle="Home" tabIcon="ios-home" show=true md="md-home"></ion-tab> 
    <ion-tab [root]="tab2Root" tabTitle="Products" tabIcon="ios-laptop" show=true md="md-laptop"></ion-tab> 
</ion-tabs> 

答えて

0

下図のようにあなたは試すことができます。

export class TabsPage { 

@ViewChild('myTabs') tabRef: Tabs; 

ionViewDidEnter() { 
    let tab:Tab = this.tabRef.getSelected();//Returns the currently selected tab 
} 

} 

it hereについて詳しく読むことができます。

この詳細をapp.component.tsに送信する必要がある場合は、Eventsを使用してください。 Eventsを使用すると、上記の詳細(tab)をapp.component.tsに送信できます。

+0

上記のコードはTabsPage上で動作しますが、私はapp.component内のアクティブなタブを取得したいです。 @Sampath私はあなたのプロフィールをチェックしました。あなたはIonic 3に関する知識がかなりあるようです。私はそれを始めています。これが私の最初のアプリです。 sidemenu + tabsを一緒に使用しているときに、ハードウェアのバックブーツが正常に動作しないという問題が発生しましたか?私はそのような問題に取り組んでおり、そのために私は現在のアクティブなページを取得する必要があります。もしあなたが何とか知っていたら私に知らせてください。 あなたは分かりますか? – Vanca

+0

ここで 'イベント'を発射するだけでいいです:そのイベントを通してその詳細を送信してください。 http://ionicframework.com/docs/api/util/Events/ – Sampath

+0

同様の種類の問題 https://stackoverflow.com/a/43811124 – Vanca

0

ページ/ tab.ts

import { NavController, NavParams } from 'ionic-angular'; 
import { Page1 } from '../page1/page1'; 
import { Page2 } from '../page2/page2'; 
import { GlobalvarProvider } from "../../providers/globalvar/globalvar"; 

export class TabPage{ 

    tab1Root = Page1; 
    tab2Root = Page2; 

    parm1="page1"; 
    parm2="page2"; 

    constructor(private navParams: NavParams,private GlobalvarProvider: GlobalvarProvider){ 
     this.GlobalvarProvider.setActiveTab(navParams.get('index')); 
    } 

} 

ページ/ tab.html

<ion-tabs color="secondary1" selectedIndex= {{index}} > 
    <ion-tab [root]="Page1" [rootParams]="parm1" tabTitle="Page1" tabIcon="ff-lunch" ></ion-tab> 
    <ion-tab [root]="Page2" [rootParams]="parm2" tabTitle="Page2" tabIcon="ff-lunch" ></ion-tab> 
</ion-tabs> 

プロバイダ/ globalvar.ts

export class GlobalvarProvider { 
    private active_tab:any; 

    constructor(){ 
     this.active_tab=null; 
    } 

    setActiveTab(val){ 
     this.active_tab=val; 
    } 
    getActiveTab(){ 
     return this.active_tab; 
    } 
} 

app.component.ts

import { GlobalvarProvider } from "../providers/globalvar/globalvar"; 
export class MyApp { 

    constructor(private GlobalvarProvider: GlobalvarProvider){ 

    } 
    initializeApp() { 
     this.platform.ready().then((source) => { 

     console.log(this.GlobalvarProvider.getActiveTab()); 

     } 
    } 
} 
関連する問題