請問我使用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) {}
原來如此,謝謝。