簡體   English   中英

打字稿可觀察訂閱未定義

[英]typescript observable subscription undefined

我發出一個 http 請求以獲取一些我試圖在以下內容中顯示的數據:
我有一個下拉選擇來顯示entriesPerPage和一個左右光標來在我的分頁中切換page 這有效,但是當我切換頁面時,它總是顯示

無法讀取未定義的屬性“頁面”

除此之外,我根本無法顯示totalEntriestotalPages ,它們似乎也不適用於數據綁定。

組件.ts

  public getArticles(): void {
    this.articleService.getAllArticlesWithPagination(this.paginationResponse.pagination)
      .subscribe((data) => {
        this.dataSource.data = data.data;
        this.paginationResponse.pagination.page = data.pagination.page;
        this.paginationResponse.pagination.entriesPerPage = data.pagination.entriesPerPage;
        this.paginationResponse.pagination.totalEntries = data.pagination.totalEntries;
        this.paginationResponse.pagination.totalPages = data.pagination.totalPages;

      });
    console.log(this.paginationResponse); // added for this question after comments
  }

分頁響應

export class PaginationResponse<T> {

  public data: T[];
  public pagination: Pagination;

  constructor() {
    this.pagination = new Pagination();
  }
}

分頁.ts

export class Pagination {

  public static readonly DEFAULT_SIZE = 5;
  public static readonly FIRST_PAGE = 0;
  public static readonly DEFAULT_TOTAL = 3;
  public static readonly DEFAULT_ENTRIES = 10;

  public page: number;
  public entriesPerPage: number;
  public totalPages: number;
  public totalEntries: number;

  constructor() {
    this.page = Pagination.FIRST_PAGE;
    this.entriesPerPage = Pagination.DEFAULT_SIZE;
    this.totalEntries = Pagination.DEFAULT_ENTRIES;
    this.totalPages = Pagination.DEFAULT_TOTAL;
  }
}

console.log(this.paginationResponse) 在此處輸入圖片說明

編輯:所以paginationResponse.pagination似乎從來沒有真正填充過 data 的data 有趣的是,除了data[]之外, data單獨顯示了分頁的字段(totalPages、totalEntries、page、entriesPerPage),但data.pagination僅顯示在 Pagination.ts 的構造函數中定義的那些(上面data.pagination代碼)。 我不明白為什么它不向它添加分頁。

解決方案:我希望PaginationResponse的返回包裝我的Pagination對象。 我從中刪除了pagination ,而是將 4 個字段放入其中。 因此,盡管答案很短,但似乎是正確的。

從我看到的data.pagination是未定義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM