Angular 如何用新数据重新加载observable?

Angular 如何用新数据重新加载observable?,angular,angular6,angular8,Angular,Angular6,Angular8,我有一个带有Observable的singltone服务,它从服务器获取数据并显示: class HttpService { constructor() { this.$blocks = this.managerService .get() .pipe(shareReplay(1)); } } 在模板中,我使用async: public blocks: any; ngOnInit() { this.blocks = this.httpSer

我有一个带有Observable的singltone服务,它从服务器获取数据并显示:

class HttpService {
   constructor() {
     this.$blocks = this.managerService
      .get()
      .pipe(shareReplay(1));

   }
}
在模板中,我使用
async

public blocks: any;

ngOnInit() {
  this.blocks = this.httpService.$blocks;
}


<div *ngFor="let block of blocks | async"></div>
公共区块:任何;
恩戈尼尼特(){
this.blocks=this.httpService.$blocks;
}
如何从另一个组件重新加载这个可观察的
块| async
,我的意思是再次请求数据和reflesh列表


问题是async只能订阅一次,如果服务器中有更改,我无法获得它们

一个快速的方法是放弃
async
管道并订阅函数中控制器中的可观察内容。然后,您可以在希望使用子组件中的
EventEmitter
重新加载数据时调用此函数

独生子女

class-HttpService{
getData(){
返回这个.managerService.get()
.管道(1);
}
}
组件A-控制器

从'@angular/core'导入{Component,OnInit};
@组成部分({
选择器:“app-component-a”
})
导出类ComponentA实现OnInit{
公众大厦:任何;
数据订阅:任何;
恩戈尼尼特(){
这是getData();
}
getData(){
如果(this.dataSubscription){//在触发新请求之前取消挂起的HTTP请求
this.dataSubscription.unsubscribe();
}
this.dataSubscription=this.httpService.getData().subscribe(
response=>{this.blocks=response},
错误=>{//句柄错误}
)
};
}
组件A-模板


组件B-控制器

从'@angular/core'导入{Component,EventEmitter,Output};
@组成部分({
选择器:“app-component-b”,
})
导出类组件B{
@Output()refreshData=neweventemitter();
emitRefresh(){
this.refreshData.emit(true);
}
}
组件B-模板

刷新数据
现在,每次按下组件B中的
刷新按钮时,组件A中的数据都将刷新


如果您因为不再使用
async
而担心内存引导问题,那么它将由HttpClient处理。因此,在控制器中而不是在模板中订阅HTTP调用是正常的。

您可以分享刷新它的方式吗?有多种方法可以做到这一点,哪种方法最好取决于这一点。或者可能是一场闪电战?