API 模型包含在 API 中不斷動態更新的 CPU 使用類別。但是當我重繪 頁面時,它只會更新資料,但可以在視圖中不重繪 頁面的情況下完成。Setimeout 作業正常 除了 setTimeoutInterval 之外還有其他方法嗎?
//app.service.ts
private behaviourData = new BehaviorSubject<Model>(null);
getBPmInfo(): Observable<Model>{
return this.http.get<Model>(`${this.url}`).pipe(
retry(3),
tap(data => this.behaviourData.next(data))
);
}
//app.component.ts
model!: Model;
ngOnInit() {
getInformation(){
this.bpmService.getBPmInfo().subscribe(data => {
this.model = data;
});
}
}
//app.component.html
<div>
<h1>CPU Usage{{model?.cpuUsage}}</h1>
</div>
但是資料應該是動態更新的,不需要重繪 頁面。嘗試使用 BehaviourSubject 我不知道為什么它不起作用。任何人都可以幫我解決這個問題。
uj5u.com熱心網友回復:
您的服務方法應該只回傳一個 Observable。如果你真的想使用 BehaviorSubject,它應該在你的“app.component.ts”中定義,如下所示:
private behaviourData = new BehaviorSubject<Model>(null);
public model$: Observable<Model>;
constructor {
this.model$ = this.behaviourData.asObservable();
}
然后,您應該關閉服務中的“tap(data => this.behaviourData.next(data))”并將其移動到組件中。
最后,只需訂閱 ngInit 中的 observable 并忘記“getInformation()”方法,如下所示:
ngOnInit() {
this.bpmService.getBPmInfo().subscribe(data => {
this.behaviourData.next(data)
});
}
在您的模板中,您只需使用“model$”可觀察物件,如下所示:
<div>
<h1 *ngIf="(model$ | async) as model">CPU Usage{{model.cpuUsage}}</h1>
</div>
uj5u.com熱心網友回復:
您可以使用Interval(milliseconds)來獲取資料。用法 :
counter = interval(60000); // sets 60 seconds interval
subscription: any = null;
ngOnInit(): void {
this.subscription = this.counter.subscribe(f => {
this.bpmService.getBPmInfo().subscribe(data => {
this.model = data;
});
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/387149.html
標籤:javascript 有角的 打字稿
