ウェブサイト検索

typescript - ionic2でメニューを開くことができません


私はionic2とTypeScriptは初心者です。

私の質問は、Ionic2でメニューを開く方法ですか?

次のコードは、page1でメニューアイコンを押すと動作しません。また、page1.tsでapp.getComponent('leftMenu').enable(true);を試しましたが、アプリを実行すると、ページが真っ白な画面になります。

誰か私に何か提案やヒントをくれますか?

page1.html

<ion-navbar *navbar>
  <button menuToggle="leftMenu">
    <ion-icon name='menu'></ion-icon>
  </button>
  <ion-title>Page 1</ion-title>
</ion-navbar>

<ion-content padding class="page1">
  <h2>Welcome to Ionic!</h2>
</ion-content>

ページ1.ts

import {IonicApp, Page} from 'ionic-angular';


@Page({
  templateUrl: 'build/pages/page1/page1.html',
})
export class Page1 {
  constructor(app: IonicApp) {
    //app.getComponent('leftMenu').enable(true); <- screen becomes blank.
  }
}

app.ts

import {App, IonicApp, Platform, MenuController} from 'ionic-angular';
import {StatusBar} from 'ionic-native';
import {Page1} from './pages/page1/page1';
import {Page2} from './pages/page2/page2';


@App({
  template: `
    <ion-menu [content]="content" id="leftMenu" side="left">
      <ion-toolbar>
        <ion-title>Pages</ion-title>
      </ion-toolbar>
      <ion-content>
        <ion-list>
          <button ion-item (click)="openPage(page1)">
            Page1
          </button>
          <button ion-item (click)="openPage(page2)">
            Page2
          </button>
        </ion-list>
      </ion-content>
    </ion-menu>
    <ion-nav [root]="rootPage"></ion-nav>`,
  config: {} // http://ionicframework.com/docs/v2/api/config/Config/
})
export class MyApp {
  rootPage: any = Page1;
  page1: any = Page1;
  page2: any = Page2;
  constructor(
    platform: Platform, 
    private menu: MenuController,
    private app: IonicApp
  ) {
    this.menu = menu;
    platform.ready().then(() => {
      // 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();
    });
  }

  openPage(page) {
    // Reset the nav controller to have just this page
    // we wouldn't want the back button to show in this scenario
    this.rootPage = page;

    // close the menu when clicking a link from the menu
    this.menu.close();
  }
}

回答 #1

以下の変更をコードに含めてみてください

  • app.ts の中の ion-nav に id を含めてください

     <ion-nav id='nav' [root]="rootPage"></ion-nav>
    
  • あなたのメソッド openPage(page) の下記のコードを置き換えてください

    openPage(page) {
           //Get the menu navigation component
      let nav = this.app.getComponent('nav'); 
      this.menu.close();
            //set the navigation root page as the page choosed
      nav.setRoot(page);
    }
    

もし問題がまだ続く場合は、ionic から既存のサイドメニューテンプレートをダウンロードして確認してください

ionic start yourProjectName sidemenu --v2 --ts

ionic beta 8の更新情報 TSはViewChildを含めるように編集する必要があります

import {ViewChild} from '@angular/core';
class MyApp {
    @ViewChild(Nav) nav: Nav;
    openPage(page) {
      this.nav.setRoot(page);
    }
}