1

我正在使用 MergeMap 在我的 Angular 8 应用程序中进行嵌套的 http 调用。但是,我的要求是在 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 显示的错误是“Type void is not assignable to type 'ObservableInput'”。

我的要求是将用户对象的ID属性分配给进行第二次 http 调用的 BlogComment 对象的UserId属性帖子。

4

1 回答 1

2

对于初学者来说,缺少关键字return,这就是“void is not assignable...”的原因。

mergeMap(commtr => { 
    userComment.UserId = commtr.Id; 
    return this.commentService.postComment();
});

(是的,订阅让任何事情发生)。

于 2019-09-13T11:13:37.400 回答