Angular 8 - Назначить свойство класса внутри MergeMap
Я использую MergeMap для выполнения вложенных HTTP-вызовов в моем приложении Angular 8. Однако мое требование - назначить свойство моей модели внутри MergeMap, как показано в приведенном ниже коде.
onFormSubmit(author, email, website, comment) {
let user = new BlogCommenter();
let userComment= new BlogComment();
user.Name = author;
user.Email = email;
user.Website = website;
userComment.Comment = "Some Comment";
userComment.PostId = 1;
userComment.ParentId = 2;
let status = this.userService.postBlogCommenter(user).pipe(
mergeMap(commtr => { userComment.UserId = commtr.Id; this.commentService.postComment() })
);
}
Конечно, код, написанный внутри mergeMap, не работает, TypeScript показывает ошибку: "Тип void не может быть назначен типу ObservableInput".
Мое требование - назначить свойство ID объекта пользователя сообщению свойства UserId объекта BlogComment, которое выполняет второй HTTP-вызов.
1 ответ
Решение
Ключевое слово return
отсутствует, для начала, поэтому "void not assignable...".
mergeMap(commtr => {
userComment.UserId = commtr.Id;
return this.commentService.postComment();
});
(И да, подпишитесь, чтобы что-нибудь случилось).