处理离子项目中的承诺

时间:2016-10-22 18:01:57

标签: angularjs ionic-framework ionic2

我有一个处理用户身份验证的服务。从数据库获取用户详细信息的auth服务。

getUser(){
  return this.storage.get('user').then( (user) => {
    if (user){
       this.user = user;
       return user
    } 
}

在组件中,我得到了用户的喜欢,

  public user ;
  ionViewDidLoad() {
    this.auth.getUser().then( (user) => {
      this.user = user;
    })
    .catch( (err) => console.log(err));
  }

在html页面中我有{{ user.uid }},其中uid是user对象的属性。但是我在控制台中收到错误,

Unhandled Promise rejection: Error in ./Home class Home - inline template:9:21 caused by: self.context.user is undefined ; 

Zone: <root> ; Task: Promise.then ; Value: Object { _nativeError: Error, originalError: TypeError, context: Object, stack: "" } anonymous/_View_Home0.prototype.detectChangesInternal@Home.ngfactory.js:153:7

只有在解析了promise后才能解析用户对象。直到那时才定义用户。我该如何解决这个问题。我不想将async与promise一起使用,因为我想处理error捕获组件。

1 个答案:

答案 0 :(得分:1)

您可以在视图中使用 elvis运算符,因此如果user属性仍然为null,则Angular不会尝试访问uid属性。

{{ user?.uid }}