Angular 6 Primeng p-dataView分页器仅生成页面1

时间:2018-10-29 08:18:49

标签: angular angular6 primeng

直截了当,我的p-dataView组件看起来很像primefaces.org教程中的那个。

=and(or(A2=A1,A2=A3),iseven(sumproduct((A$1:A1<>A$2:A2)*(A$2:A2=A$3:A3))+(A$1=A$2)))

和我的打字稿文件

<p-dataView #dv [value]="routes" [paginator]='true' [rows]="5" totalRecords="{{totalRecords}}" pageLinkSize="3" paginatorPosition="both">
    <p-header>
        <div class="ui-helper-clearfix">
            <div class="ui-g">
                <div class="ui-g-6 ui-md-4" style="text-align:right">
                    <p-dataViewLayoutOptions></p-dataViewLayoutOptions>
                </div>
            </div>
        </div>
    </p-header>
    <ng-template let-route pTemplate="listItem">
        <div class="ui-g" style="padding: 2em;border-bottom: 1px solid #d9d9d9">
            <div class="ui-g-12 ui-md-3" style="text-align:center">
                <img [src]="'data:image/png;base64,'+route.thumbnail" alt=""/>
            </div>
            <div class="ui-g-12 ui-md-8 route-details">
                <div class="ui-g">
                    <div class="ui-g-2 ui-sm-6">Name: </div>
                    <div class="ui-g-10 ui-sm-6"><b>{{route.name}}</b></div>

                    <div class="ui-g-2 ui-sm-6">Lenght: </div>
                    <div class="ui-g-10 ui-sm-6"><b>{{route.length}}</b></div>

                    <div class="ui-g-2 ui-sm-6">RecordTime: </div>
                    <div class="ui-g-10 ui-sm-6"><b>{{route.recordTime}}</b></div>
                </div>
            </div>
        </div>
    </ng-template>
    <ng-template let-route pTemplate="gridItem">
        <div style="padding:.5em" class="ui-g-12 ui-md-3">
            <p-panel [header]="route.name" [style]="{'text-align':'center'}">
                <div class="route-detail">{{route.length}} - {{route.recordTime}}</div>
                <hr class="ui-widget-content" style="border-top:0">
                <button pButton type="button" icon="fa-search" (click)="selectRoute($event, route)" style="margin-top:0"></button>
            </p-panel>
        </div>
    </ng-template>
</p-dataView>

然后我在其他地方使用此组件,并在对服务器进行API调用之后填充数据,然后服务器将返回填充在p-dataView内部的数据。分页器设置为true并显示,但始终为页面1。服务器返回10条路由(数据),p-dataView显示其中5条路由(按行设置),但分页器仅保留1页。我是否需要实施某种逻辑来做到这一点,或者这仅仅是一些错误?我也没有在primefaces上看到它的外观,因此我的项目可能有问题。我使用Angular CLI创建了项目。我还试图仅使用p-dataView创建另一个项目,而paginator仍然无法正常工作。看起来像这样:

enter image description here

更新: 我用所有参数调用app-routelister(这是我的具有p-dataView的组件)。 “路线”是10条路线的数组,并且totalRecords手动设置为100。

@Input('routes') routes: Route[];
@Input('totalRecords') totalRecords: Number;

displayDialog: boolean;

public selectedRoute: Route;

constructor() { }

ngOnInit() { }

onDialogHide() {
    this.selectedRoute = null;
}

selectRoute(event: Event, route: Route) {
    this.selectedRoute = route;
    this.displayDialog = true;
    console.log("Selected route: " + this.selectedRoute);
    event.preventDefault();
}

2 个答案:

答案 0 :(得分:0)

@ user3029612请在p-dataView中进行更改,并检查您的totalRecords值,如果该值大于1,则会显示您的分页器

<p-dataView #dv [value]="routes" [paginator]='true' [rows]="5" 
        [totalRecords]="totalRecords" pageLinkSize="3" 
        paginatorPosition="both">
      </p-dataView>

答案 1 :(得分:0)

我刚遇到相同的问题。我终于在primeng的文档中找到了解决方案。看看https://www.primefaces.org/primeng/#/dataview,然后向下滚动到延迟加载部分。

  

惰性模式非常适合处理大型数据集,而不是加载   整个数据,通过调用onLazyLoad加载一小块数据   每次分页发生时回调。 [...]   通过执行以下操作将逻辑行数分配给totalRecords   投影查询分页器配置,以便分页器   假设实际存在totalRecords记录,则显示UI   大小,尽管实际上它们不像懒惰模式那样,只有记录   当前页面上显示的内容已经存在。

因此,无论您正在执行真正的延迟加载,还是不必将延迟属性设置为true:

<p-dataView #dv [value]="routes" [paginator]="true" [lazy]="true" [rows]="5" [totalRecords]="totalRecords" pageLinkSize="3" paginatorPosition="both">
   <!-- [...] -->
</p-dataView>