打字稿可观察的订阅未定义

时间:2020-10-14 17:26:58

标签: angular typescript

我发出一个http请求以获取要在下面显示的一些数据:
我有一个下拉菜单选择显示entriesPerPage,向左和向右光标在分页中切换page。这行得通,但是当我切换页面时,它总是显示

无法读取未定义的属性“页面”

除了我根本无法显示totalEntriestotalPages之外,它们似乎也不适用于数据绑定。

component.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
  }

pagination.response

export class PaginationResponse<T> {

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

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

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) enter image description here

编辑:所以看来paginationResponse.pagination从未真正填充过data的数据。有趣的是,除了data之外,data[]仅显示了分页的字段(totalPages,totalEntries,page,entriesPerPage),但是data.pagination仅显示了在分页的构造函数中定义的字段.ts(上面的代码片段)。我不明白为什么它不添加分页。

解决方案: 我期望PaginationResponse中的返回值包装我的Pagination对象。我从中删除了pagination,而是在其中放入了4个字段。因此,尽管简短,但答案似乎正确。

1 个答案:

答案 0 :(得分:0)

从我看到的data.pagination未定义。