订阅API调用:Angular2

时间:2017-08-06 03:16:27

标签: angular

我创建了一个Angular应用程序,允许用户对特定媒体文件(如视频)发表评论。发布评论时,会发出一个http POST调用,将注释存储在数据库中。

在加载组件时,ngOnInit通过进行http GET调用来加载数据库中的所有注释。但是,在发布新评论时,评论不会在不刷新页面的情况下得到更新。是否可以在发布评论时更新评论列表而不刷新页面?

2 个答案:

答案 0 :(得分:2)

subscribe您的http.post以及success张贴时将帖子添加到您的帖子this.posts.push(newPost)

答案 1 :(得分:0)

为简单起见,我们假设您有一个组件ViewComponent,它会显示评论列表以及添加新评论的评论表单。 ViewComponent具有public comments: Comment[]等评论的本地状态,该状态由ngOnInit()中的GET api调用初始化。

我假设你有一个像CommentsService这样的服务来进行api调用。 添加注释时,将调用函数addComment(comment),该函数处理POST请求。 POST成功后,评论将添加到您的评论数组中。

如果服务返回Observable(此处没有取消订阅):

addComment(comment: Comment): void {
  this.commentService.add(comment)
    .subscribe(comment => {
      this.comments.push(comment);
    });
}

如果服务返回Promise:

addComment(comment: Comment): void {
  this.commentService.add(comment)
    .then(comment => {
      this.comments.push(comment);
    });
}