更新其他组件

时间:2017-09-21 16:34:21

标签: angular rxjs

您试图找到更新组件视图的最佳方法,当数据库被修改时,

目前我订阅了一个observable来获取所有记录

   getBlogs(){
       return this._http.get(this.blogsURL+'blogs')
                  .map((result: Response ) => {
                  this.blogs = result['blogs'];
                    return this.blogs;
                   })
   }

然后

this.blogsService.getBlogs()
    .subscribe((res)=>{
      this.blogs = res;
      console.log(res)
    })

这很好,但是当记录更新时,组件中的视图不会被删除。 我可以通过一个主题解决这个问题,当getBlogs和更新博客功能被解雇时更新它

this.populateList = new Subject<Blog[]>();
this.populateList.next(blogs)

然后订阅,所以我最终得到这样的东西?

  this.blogsService.getBlogs()
    .subscribe((res)=>{
     // this.blogs = res;
      //console.log(res)
    })

  this.blogsService.populateList
        .subscribe((res)=>{
          this.blogs = res;
          console.log(res)
        })

但是我想将它全部用于一个订阅,也许是mergeMap switchMap? 希望这是有道理的

1 个答案:

答案 0 :(得分:1)

如果您只是想async将来自服务的Observable响应严格绑定到您的视图,那么就不要在组件中订阅该observable。只需调用返回可观察(和映射)值的服务即可。然后在视图中使用async管道动态显示数据。因此,每次发出另一个值或观察到数据发生变化时,它都会在视图中自动更新。

this.myBlogs = this.blogsService.getBlogs();

在模板中,

<div [innerHTML]="myBlogs | async"></div>

希望你能利用这个想法来达到最终结果。如果这不是您想要的,请发表评论。