#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. Рад, что смог помочь 🙂