動態

詳情 返回 返回

Angular 我在點擊了上一頁或者下一頁方法之後,重新加載渲染數據。為什麼還需要再點擊一次頁面的其他地方才會渲染出來?(或者數據改變了頁面沒有渲染) - 動態 詳情

在你的 TypeScript 代碼中,當調用 nextPage_TopSelling()prevPage_TopSelling() 方法時,雖然你更新了 currentPage_TopSelling 的值並調用了 reloadTopSelling() 方法,但是 Angular 並不會自動檢測到這些變化並重新渲染頁面。這是因為 Angular 的變化檢測機制是基於異步的,在一些情況下需要手動觸發變化檢測。

為了解決這個問題,你可以注入 ChangeDetectorRef 服務並手動觸發變化檢測。首先,將 ChangeDetectorRef 導入到你的組件中:

typescript
import { ChangeDetectorRef } from '@angular/core';
然後在組件的構造函數中注入 ChangeDetectorRef
typescript
constructor(
private cdr: ChangeDetectorRef) { }
最後,在 reloadTopSelling() 方法中的訂閲回調函數末尾調用 detectChanges() 方法來手動觸發變化檢測:
typescript
reloadTopSelling() {
  // 其他代碼...

  this.partsService.getList(undefined, stateId, undefined, this.currentPage_TopSelling, this.itemsPerPage_TopSelling).subscribe((res: PartsDto_WebSitePagedResultDto) => {
    // 其他代碼...

    // 調用變化檢測
    this.cdr.detectChanges();
  });
}

通過這種方式,當你調用 nextPage_TopSelling()prevPage_TopSelling() 方法時,Angular 將會在數據更新後重新渲染頁面,而不需要再次點擊頁面的其他地方。

Add a new 評論

Some HTML is okay.