web-dev-qa-db-ja.com

ionic 4?でサイドメニューを無効にする方法は?

ionic 3アプリにthis.menuCtrl.swipeEnable(false);を使用しています。これは、サイドメニューを無効にすると正常に機能します。しかし、ionic 4では機能しません!以下は、私のionic 4コードサンプルです。

login.page.ts

constructor(public loginService: LoginService, private router: Router, public menuCtrl: MenuController) {
    this.menuCtrl.swipeEnable(false);
   }

app.component.html

<ion-app>
  <ion-split-pane>
    <ion-menu type="Push">
      <ion-header>
        <ion-toolbar color="success">
          <ion-title>Menu</ion-title>
        </ion-toolbar>
      </ion-header>
      <ion-content>
        <ion-list>
          <ion-menu-toggle auto-hide="false" *ngFor="let p of appPages">
            <ion-item [routerDirection]="'root'" [routerLink]="[p.url]">
              <ion-icon slot="start" [name]="p.icon"></ion-icon>
              <ion-label>
                {{p.title}}
              </ion-label>
            </ion-item>
          </ion-menu-toggle>
        </ion-list>
      </ion-content>
    </ion-menu>
    <ion-router-outlet main></ion-router-outlet>
  </ion-split-pane>
</ion-app>
5
Abhijit M. Abhi
this.menuCtrl.enable(false);

これはコンストラクタでも機能します。これをionic v4-beta.2プロジェクトで使用していますが、正常に動作します。

また、ionicangularを使用しているので、OnInitライフサイクルフックを使用することもできます。

4
ashfaq.p

まず、swipeEnable()がswipeGesture()になりました。

次に、MenuControllerで同様の問題が発生し、ionic =コアドキュメント。

固有のIDを持つ複数のサイドメニューがあり、デフォルトではfalseに設定されていましたが、特定のページで有効にする必要がありました。しかし、MenuControllerはid'sを認識していませんでした。

無意識の点まで考えて、私はionicコアドキュメントをgithubで開き、MenuControllerがidではなくmenu-idを探すようになったことを知りました。

<ion-menu menu-id="myMenu">...

つかまれた例:

this.menuCtrl.enable(true, 'myMenu')

動作します。

いつも振り返ってみると、新しい方法とそれを見つけるための解決策の両方がとても明白に思えます。

3
Jai Preston

試して

this.menuCtrl.enable(false);

これもここで回答されているようです ログインページのメニューを無効にするionic 4

2

あなたのlogin.page.ts内でこれを試してください

constructor(private navCrtl: NavController, private menu: MenuController) { this.menu.enable(false); }

1
abhay

私にとっては、メソッドngOnInit内での作業です

ngOnInit() { 
 this.menuCtrl.enable(false); // or true 
}
1
Rafael Moura