angular - 基于异步事件在 ionic2 和 angular2 应用程序中设置根页面

标签 angular ionic2

我正在尝试启动一个基本的 ionic2 应用程序,并且想知道我的初始应用程序加载时间是否有问题。如果用户未通过身份验证,我想做的是将起始页设置为登录页。

我最初将根页面设置为主页,然后当异步调用从 localstorage 返回时,如果用户未经身份验证,我会将根页面重置为登录页面。但是,这会导致他们看到一个页面时出现闪烁,然后被发送到另一个页面。

看来我想做的是在显示任何屏幕之前等待本地存储调用。

我的问题是:按照现在的代码,是否会出现平台就绪在设置根页面之前触发的错误情况,从而导致某种问题?我应该如何处理 Ionic 2 和 Angular 2 中的这种情况?我应该使 get localStorage 调用同步,还是应该将其填充到 Angular 2 中作为应用程序或页面生命周期一部分的另一个事件或方法中?

我应该使用某种可观察语法还是等待语法?

export class MyApp {
  rootPage: any;
  local: Storage = new Storage(LocalStorage);

  constructor(platform: Platform) {

    this.local.get('user').then(user => {
      if (user) {
        this.rootPage = TabsPage;
      } else {
        this.rootPage = LoginPage;
      }
    });

    platform.ready().then(() => {
      // Will this ever fire before the rootpage is set?
      StatusBar.styleDefault();

    });
  }
}

最佳答案

您不需要添加对本地存储的异步调用,如您在本例中所见: https://github.com/RedFroggy/ionic2-nfc-app/blob/master/app/app.ts#L52

您只需要在本地存储中检查用户是否存在并将rootPage设置为HomePage或LoginPage。

关于angular - 基于异步事件在 ionic2 和 angular2 应用程序中设置根页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36664412/

相关文章:

Angular2 Webpack Assets 和全局 styles.css

angular - 如何从 Angular 属性指令中访问元素 HTML?

javascript - Angular4 中的图像旋转

Angular2、Ionic2 :How to access an array of objects inside another array of objects in typescript?

angular - 重定向到下一页时如何避免页脚上的选项卡

javascript - map 对象中的值没有增加

angular - 重置 Angular 2 应用程序

javascript - ng-repeat 对象未定义

javascript - 从 URI 获取文件 base64

javascript - Ionic 2 从子页面修改 app.js 中的变量