angular2 - ionic2路由、参数传递的问题

查看:174
本文介绍了angular2 - ionic2路由、参数传递的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

最近在用ionic 2开发一个小型应用,在实现登录功能遇到了问题。我是采用侧栏菜单的形式实现登录的,类似于QQ,将用户中心、设置等放在侧栏菜单里,实现登录前加载登录前的页面,登录后加载登录后的页面:

实现侧栏菜单是在src/app/app.html中

//在src/app/app.html
<ion-menu [content]="userSetting">  
    <ion-nav [root]="menuPage"></ion-nav>
</ion-menu>
<ion-nav #userSetting [root]="rootPage"></ion-nav>

在login.ts里用navCtrl.push()方法跳转到app.ts里的MyApp

//请大神忽略if 它是个认证,就是登录成功,关掉loading动画,跳转页面,时间是模拟请求加上去的
    if(USER != '') {
      setTimeout(() =>{
        loading.dismiss();
        this.navCtrl.push(MyApp);
      },5000);

用这个方法,发现能够进入到home页,但是侧栏菜单不起作用了,后来发现侧栏菜单里关联的menuPage是在一开始就加载好的,也就是从子页面push到MyApp并不能刷新侧栏菜单,所以请问大神们,这样有解决办法吗?或者有其他实现跳转侧栏菜单的方法吗?

注:navCtrl.setRoot()方法也是一样的,只是没有返回箭头。

解决方案

今天试了一天,终于是找到了一个比较不错的解决办法。一开始我想着改变<ion-nav>里的[root]的指向,发现这个绑定只能绑定一次,即如果我把一开始的menuPage绑定在[root]上,登录之后,去改变[root]的指向页面,就会报错。然后去官网查,官网的教程几笔带过,只说了基本用法,可能是忙着ionic3吧。但是发现了一个新的组件,<ion-segment>,也不能说是新的,我之前也有用过,它是实现一个页面内实现类似于JQuery做的新闻导航栏那样的效果,于是:

//那个分栏导航的按钮,注意它上面的绑定事件
<div>
      <ion-segment [(ngModel)]="UcHeader">
        <ion-segment-button value="isLogined">
            登录的
        </ion-segment-button>
        <ion-segment-button value="unLogin">
              未登录
        </ion-segment-button>
      </ion-segment>
</div>
//把它放在content上面,就被挡住了,以后再研究怎么隐藏代码
<ion-content>
<div [ngSwitch]="UcHeader">
    <ion-list *ngSwitchCase="'isLogined'">
        //登录的
    </ion-list>
    <ion-list *ngSwitchCase="'unLogin'">
        //没登陆的
    </ion-list>
</div>
</ion-content>

在对应ts页面里:

@Component({
。。。。
})export class Page{
UcHeader: string = "unLogin";      //这个是默认选中哪个选项卡
constructor(...){...}
    ionViewWillLoad(){        //我用的是这个周期
        let user = this.storageService.read<userInfo>('UserInfo');  //读取本地数据
        
        if(user != null) {        //判断
          this.UcHeader = "isLogined";        //改变值,即改变默认选项卡
        }else {
            this.events.subscribe('isLogined',() =>{        //登录页面那里有一个事件发布,这里来订阅,然后改变值
            this.UcHeader = "isLogined";
              });      
        }

          

}

}

这样就实现了我在侧栏菜单的登录比较好的登录跳转方案。ionic的坑踩不完,我也只是初学者,有不妥的地方欢迎指正,或是大家有什么更好的方案欢迎前来讨论。

这篇关于angular2 - ionic2路由、参数传递的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆