[将精确页面列表从任何页面转换为任何页面[]时将其转换为页面字段?

问题描述 投票:0回答:1

我在分页时遇到的问题是我在angular 7应用程序上工作,无法将精确的分页列表任何分配给pagefield any []。

因为pagefield是类型数组,而exactpagelist是类型any。

该行的最后一行中的函数totalNoOfPages存在该问题

this.pageField = this.exactPageList;
this.pageField = 2; not correct

我希望是

this.pageField = [1,2];

表示我需要转换this.exactPageList;要接受的数组分配给pagefield怎么做?

pageField:any[];
exactPageList:any;
totalNoOfPages() {  

    this.paginationData = Number(this.totalReportCount / this.ReportPerPage);  
    console.log("pagination data :" + this.paginationData)
    let tempPageData = this.paginationData.toFixed(); 
    console.log("tempPageData data :" + tempPageData) 
    if (Number(tempPageData) < this.paginationData) {  
      this.exactPageList = Number(tempPageData) + 1;  
      this.paginationService.exactPageList = this.exactPageList;  
      console.log("exactPageList1  data :" + this.exactPageList ) 
    } else {  
      this.exactPageList = Number(tempPageData);  
      this.paginationService.exactPageList = this.exactPageList  
      console.log("exactPageList2  data" + this.exactPageList ) 
    }  
    this.paginationService.pageOnLoad();  
    this.pageField = this.exactPageList;    

  }  

上面的代码结果如下:

pagination data1.0666666666666667
reportdetails.component.ts:265 tempPageData data1
reportdetails.component.ts:269 exactPageList1  data2
reportdetails.component.ts:263 pagination data1.0666666666666667
reportdetails.component.ts:265 tempPageData data1
reportdetails.component.ts:269 exactPageList1  data2

预期结果

this.pageField = [1,2];
javascript typescript angular7 angular-directive angular-components
1个回答
0
投票

使用注释的一些解释:

this.paginationData = Number(this.totalReportCount / this.ReportPerPage);  
console.log("pagination data :" + this.paginationData)
// Use Math.round instead. Then you get an numeral and not a string.
let tempPageData = this.paginationData.toFixed(); 
console.log("tempPageData data :" + tempPageData) 
// Then Number() is not necessary here anymore.
// Moreover as far as I understand, you actually want to use always the 'bigger number'. 
// That means, actually it would make sense to use Math.ceil() above.
// In that case, you don't need to use a condition at all.
if (Number(tempPageData) < this.paginationData) {  
  this.exactPageList = Number(tempPageData) + 1;  
  this.paginationService.exactPageList = this.exactPageList;  
  console.log("exactPageList1  data :" + this.exactPageList ) 
} else {  
  // You are doing almost the same like in the condition clause above.
  // It would be enough to set this.exactPageList condtionally and do the rest afterwards.
  this.exactPageList = Number(tempPageData);  
  this.paginationService.exactPageList = this.exactPageList  
  console.log("exactPageList2  data" + this.exactPageList ) 
}  
this.paginationService.pageOnLoad();  
this.pageField = this.exactPageList; 

我会做什么:

this.paginationData = Number(this.totalReportCount / this.ReportPerPage);  
console.log("pagination data :", this.paginationData)
let tempPageData = Math.ceil(this.paginationData);
console.log("tempPageData data :", tempPageData) 
// Let's create an array from 1 .. N
this.exactPageList = [...Array(tempPageData).keys()];
this.paginationService.exactPageList = this.exactPageList;  
console.log("exactPageList data :", this.exactPageList )   
this.paginationService.pageOnLoad();  
this.pageField = this.exactPageList; 
© www.soinside.com 2019 - 2024. All rights reserved.