Я пытаюсь добавить некоторую обработку ошибок в функцию ниже в моем приложении Ioni c / Angular:
Компонент детализации разговора:
this.conversationsSub = this.conversationsService
.getConversation(this.conversationId)
.subscribe(
conversation => {
this.usersSub = this.usersService.getUserByUserId(this.conversation.mechanicId).subscribe(
user => {
loadingEl.dismiss();
});
},
error => {
loadingEl.dismiss();
this.alertCtrl.create({
header: 'An Error Occurred',
message: 'Conversation not found. Please try again later.',
buttons: [
{
text: 'Okay',
handler: () => {
this.router.navigate(['/home']);
}
}
]
}).then(alertEl => {
alertEl.present();
})
});
Итак, когда я Передав неверное значение this.conversationId
, alertController
выше отображает ожидаемое сообщение об ошибке.
Тем не менее, я получаю это сообщение об ошибке в консоли в отношении this.conversationsService.getConversation()
:
Невозможно прочитать свойство 'userId' с нулевым значением
Вот метод в Службе бесед:
getConversation(id: String) {
return this.http
.get<ConversationData>(
`https://mychanic-60927.firebaseio.com/conversations/${id}.json`
)
.pipe(
map(convoData => {
return new Conversation(
id,
convoData.userId,
convoData.mechanicId,
convoData.messages
);
})
)
}
Может кто-нибудь подсказать, как я могу обработать эту ошибку, если this.conversationId
неверен?
Я пытался добавить convoData?.userId
, но это не сработало.