如何在Ionic 4中禁用侧面菜单?

时间:2018-08-11 18:26:48

标签: angular ionic-framework ionic3 hybrid-mobile-app ionic4

我正在将this.menuCtrl.swipeEnable(false);用于ionic 3应用。这对于禁用侧边菜单很好用。但是,它不适用于离子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 个答案:

答案 0 :(得分:3)

LinearLayout layout = findViewById(R.id.main_content);
for (int i = 0; i < layout.getChildCount(); i++) {
       View widget = layout.getChildAt(i);
       if (widget instanceof EditText) {
           widget.setFocusable(false);
           widget.setClickable(false);
       }
}

这也将在构造函数中起作用。我在ionic v4-beta.2项目中使用了它,并且效果很好。

另外,我看到您将this.menuCtrl.enable(false); ionic一起使用,因此您也可以使用OnInit生命周期挂钩。

答案 1 :(得分:2)

尝试

this.menuCtrl.enable(false);

这里似乎也可以回答disable menu on login page ionic 4

答案 2 :(得分:2)

首先,swipeEnable()现在为swipeGesture()。

第二,我在 MenuController 上遇到了类似的问题,将头撞在墙上的时间超过了我将要披露的时间,然后才意识到阅读离子核心文档是明智的。

我有多个侧面菜单,每个侧面菜单都有唯一的ID,默认情况下设置为 false ,必须在特定页面上启用。但是MenuController不能识别我传入的 id

考虑到失去意识,我在github上打开了ionic核心文档,并了解到MenuController现在正在查找menu-id而不是id。所以:

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

例如由

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

有效。

与往常一样,新方法和找到它的解决方案看起来都很明显。

答案 3 :(得分:1)

对我来说,它在ngOnInit方法内部工作

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

答案 4 :(得分:1)

在您的login.page.ts

中尝试一下

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