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();
});

(И да, подпишитесь, чтобы что-нибудь случилось).

Другие вопросы по тегам