[問題]使用async取得遠端的資料,要如何重新取得資料?

請問我使用http.get取得遠端資料

Data= this.http.get(url);

然後再Html中使用{{Data|async|json}}取得資料,如我已知遠端資料已變更,我要如何讓這使用async已取得的資料重新更新?

假設你有一個按鈕可以 reload 資料,這是一種可能的寫法

export class DemoComponent {
  reload$ = new BehaviorSubject(true);
  data$ = this.reload$.pipe(mergeMap(()=> this.http.get('api url')));

 reload(){
   this.reload$.next(true);
 }
}

//template 的地方
<div *ngFor="let item of data$ | async">
.....
</div>

一般比較容易的作法大概就這樣,把請求的部分都放在 service 中,元件再呼叫 service 的方法。

// service.ts
get() {
  return this.http.get(url);
}

// component.ts
data;

get() {
  // 呼叫 service 的 get 重新請求並取得新的結果
  this.data = this.service.get(); 
}

constructor(private service: Service) {}

原來如此,謝謝。