如何根据媒体查询动态传递值

Sud*_*raj 7 css typescript angular angular7

在我的产品部分有大约 300 个产品,因此对于分页我使用了 ngx-pagination 插件。所以产品应该基于媒体查询来展示。例如,我必须传递 1600px 到 1200px 的值(在媒体查询中)itemsPerPage:30,应该有 1199 到 768itemsPerPage:24

如何实现这一目标?

<ecom-section-box>
    <ecom-card-wc-5 *ngFor="let data of dataArray4  | paginate: { itemsPerPage: 30, currentPage: p } " [data]="data"></ecom-card-wc-5>
</ecom-section-box>
<div class="card card2">
    <span class="pagination-alignment">
        <pagination-controls (pageChange)="p = $event" ></pagination-controls>
    </span>
</div>
Run Code Online (Sandbox Code Playgroud)

Joh*_*man 7

获取窗口宽度init

public innerWidth: any;
ngOnInit() {
  this.innerWidth = window.innerWidth;
}
Run Code Online (Sandbox Code Playgroud)

如果您想在调整大小时保持更新:

@HostListener('window:resize', ['$event'])
onResize(event) {
  this.innerWidth = window.innerWidth;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用此代码检查窗口大小是否为1600px to 1200px1199 to 768并进行相应设置itemsPerPage

如何使用此代码:

@HostListener('window:resize', ['$event'])
onResize(event) {
  this.innerWidth = window.innerWidth;
  if (this.innerWidth <= 1600 && this.innerWidth >= 1200) {
    itemsPerPage = 30;
  } else if (this.innerWidth <= 1199 && this.innerWidth >= 768) {
    itemsPerPage = 24;
  }
}
Run Code Online (Sandbox Code Playgroud)