Обработка обещаний в Ionic project

#angularjs #ionic-framework #ionic2

#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
  

Пользовательский объект будет разрешен только после разрешения обещания. Пользователь до этого момента не определен. Как я могу решить эту проблему. Я не хочу использовать async с возвратом обещания, поскольку я хочу обрабатывать error перехват в компоненте.

Ответ №1:

Вы можете использовать оператор elvis в своем представлении, поэтому, если user свойство по-прежнему равно null, Angular не будет пытаться получить доступ к uid свойству.

{{ user?.uid }}

Комментарии:

1. Спасибо, чувак. Это помогло. Было бы лучше, если бы по этому поводу была какая-нибудь документация.

2. Рад, что смог помочь 🙂