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>
this.menuCtrl.enable(false);
これはコンストラクタでも機能します。これをionic v4-beta.2プロジェクトで使用していますが、正常に動作します。
また、ionic
でangular
を使用しているので、OnInitライフサイクルフックを使用することもできます。
まず、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')
動作します。
いつも振り返ってみると、新しい方法とそれを見つけるための解決策の両方がとても明白に思えます。
あなたのlogin.page.ts内でこれを試してください
constructor(private navCrtl: NavController, private menu: MenuController) { this.menu.enable(false); }
私にとっては、メソッドngOnInit内での作業です
ngOnInit() {
this.menuCtrl.enable(false); // or true
}