ng-treater
TypeScript icon, indicating that this package has built-in type declarations

14.2.7 • Public • Published

Directive

ntPagingContainer

  • 参数
参数名 类型 默认值 备注
url string undefind 分页请求的url地址
querys json { } 分页请求的默认参数
options PagingSetting undefind 分页请求配置项,可以覆盖全局配置
  • 事件
事件名 输出类型 备注
created Observable 数据源创建成功,并输出observable供外部订阅

ntScrollLoading

该指令暂不需要传入参数,只需与ntPagingContainer放置在同一宿主元素即可

ntPlaceHolder

该指令暂不需要传入参数,需要配合ng-container或原生html将渲染数据的包裹。


Service

  • PagingDataService

该服务为内部指令使用的通用服务,用于定义分页请求的逻辑集合。若需要对分页请求逻辑进行更精确的控制,可以手动注入该服务以替代指令ntPagingContainer(可以理解为ntPgingContainer内部接管了对PagingDataService的调用);示例如下:

// demo.component.ts
import { PagingDataService } from 'ng-treater';

@Component({
  selector: 'app-demo',
  templateUrl: './demo.component.html',
  providers: [PagingDataService] //必须在组件内部提供该服务
})
export class BanksComponent implements OnInit {

  data$: Observable<any[]>;
  
  constructor(
    private paging: PagingDataService<any>,
  ) { }

  ngOnInit(): void {
    this.data$ = this.paging.create('/api/getData');
  }

  get State() {
    return this.paging.loadingState$;
  }
  
  nexPage() {
    this.paging.nextPage()
  }

  prePage() {
    this.paging.previousPage()
  }
}

手动引入PagingService后,不能再使用ntPagingContainer;但ntScrollLoading与ntPlaceHolder仍可使用

<!-- demo.component.html -->
<div class="container" >
  <ng-container *ngPlaceHolder>
    <div class="item" *ngFor="let item of data$ |async">
      {{item}}
    </div>
  </ng-container>  
</div>

Interface

  • PagingSetting

分页请求配置项

{  
  /** 每页条数 */
  size: number;
  /** 起始页索引 */
  start: 0 | 1;
  /** 每页条数的键名 */
  sizeKey: string;
  /** 当前页索引的键名 */
  indexKey: string;  
  /** 访问列表数据的属性路径 */
  dataPlucker: string[];
  /** 访问总条数的属性路径 */
  totalPlucker: string[];
  /** 是否为滚动加载 */
  scrollLoading: boolean;
}
  • NgTreaterSetting

ng-treater插件的全局配置项,配合令牌NG_TREATER_SETTINGS一起使用

{  
  /** 自定义占位提示组件 */
  placeholder?: Type<DataLoadingStateTreater>;
  /** 请求重试次数 */
  retryCounter?: number;
  /** 默认请求方法 */
  method?: 'post' | 'get';
  /** 分页请求配置项 */
  paging?: PagingSetting;
}
  • DataLoadingStateTreater

自定义Placeholder组件需要继承的接口

{
  /** 写入当前加载状态 */
  writeState: (state: NtLoadingState) => void;
  /** 注册错误重试方法 */
  registerRetryFunc: (fn: any) => void;
}
  • enum NtLoadingState

数据请求状态枚举

{
  /** 数据请求中*/
  PENDING = 'pending',
  /** 数据请求成功 */
  SUCCESS = 'success',
  /** 空数据 */
  EMPTY = 'empty',
  /** 请求失败 */
  FAILED  = 'failed',
  /** 请求结束(仅在分页请求场景下有效,表示当前已为最后一页,无法再请求下一页数据) */
  END = 'end'
}

Readme

Keywords

none

Package Sidebar

Install

npm i ng-treater

Weekly Downloads

2

Version

14.2.7

License

none

Unpacked Size

431 kB

Total Files

75

Last publish

Collaborators

  • fanxing1993