代码改变世界

Angular4 后台管理系统搭建(1) - 建立一个通用的Wijmo5 flexgrid分页器组件

2017-06-26 15:44  Vetkdf  阅读(10918)  评论(13编辑  收藏  举报

17年4月,开始学习angular2,到5月跟着升级到angular4。目前还在学习,搭建中。我的最终目的是用angular4框架搭建一个后台管理系统。这里使用了三个关键的外部库。

1、使用adminLte 皮肤。这个是bootstrap的一款皮肤。风格比较严肃。所以选这个皮肤;

2、引用了ngx-bootstrap。这个是bootstrap对应angular的库;

3、使用wijmo5 flexgrid表格,号称是angular下最好的表格组件。

 

本章说下如何搭建一个flexgrid通用分页器组件,angular的核心就是组件化,所以在搭建组件上,天生就有长处。一般是在父类组件上添加flexgrid的表格,所有和分页相关的信息,按钮。整合进入分页器组件内。所以我们先明确父类组件和分页器组件之间需要传递的参数。

父类组件向分页器组件传递两个参数,当前页面  pageindex 。页码总数  pagecount。在分页器子类组件内,点击跳转按钮。调用父类组件的输定绑定函数,重新绑定表格即可。分页器最终效果如下

demo 演示地址   http://121.42.203.123

github地址         https://github.com/Vetkdf/yang-test

 

分页器组件ts代码,关键就是两个Input参数,一个Output监听。

import { Component, OnInit, Input, Output, EventEmitter} from '@angular/core';

@Component({
  selector: 'app-paging',
  templateUrl: './paging.component.html',
  styleUrls: ['./paging.component.css']
})
export class PagingComponent implements OnInit {

  constructor() { }

  @Input() pageIndex: number = 1;
  @Input() pageCount: number = 1;
  @Output() change: EventEmitter<number> = new EventEmitter<number>();

  ngOnInit() {
  }

  moveToFirstPage() {
    this.change.emit(1);
  }

  moveToPreviousPage() {
    this.change.emit(this.pageIndex - 1);
  }

  moveToNextPage(){
    this.change.emit(this.pageIndex + 1);
  }

  moveToLastPage() {
    this.change.emit(this.pageCount);
  }

}

分页器组件html代码,四个按钮跳转最后,最前,上一页,下一页。按钮要把消息传递给父类组件,触发重绑定表格即可。

<div class="btn-group">
   <button type="button" class="btn btn-default"
       (click)="this.moveToFirstPage()"
       [disabled]="this.pageIndex <= 1">
       <span class="glyphicon glyphicon-fast-backward"></span>
   </button>
   <button type="button" class="btn btn-default"
       (click)="this.moveToPreviousPage()"
       [disabled]="this.pageIndex <= 1">
       <span class="glyphicon glyphicon-step-backward"></span>
   </button>
   <button type="button" class="btn btn-default" disabled style="width:100px">
        {{ this.pageIndex | number }} / {{ this.pageCount | number }}
   </button>
   <button type="button" class="btn btn-default"
       (click)="this.moveToNextPage()"
       [disabled]="this.pageIndex >= this.pageCount">
       <span class="glyphicon glyphicon-step-forward"></span>
   </button>
   <button type="button" class="btn btn-default"
       (click)="this.moveToLastPage()"
       [disabled]="this.pageIndex >= this.pageCount">
   <span class="glyphicon glyphicon-fast-forward"></span>
   </button>
</div>

父类调用代码

<app-paging [pageIndex]="this.pageIndex" [pageCount]="this.pageCount" (change)="bindpage($event)"></app-paging>

父类绑定分页数据ts代码

  private bindpage(event:number):void {
    this.GetList.GetListPageBy_M2V3(event,this.comId).then(backobj =>{
      this.cvPaging.sourceCollection = backobj.List;
      this.pageIndex = backobj.PageIndex;
      this.pageCount = backobj.CountPage;
    });
  }

 

如果下载github上的源码。可以好好看下M2V1组件源码。这个组件演示全国的省市区信息并进行分页,angular4的模块化划分还是做的非常好的。