本文实例讲述了Angular封装搜索框组件操作。分享给大家供大家参考,具体如下:
后台管理系统多是以表格和表单为主,有列表就一定会有列表的筛选功能,所以在此把列表头部的搜索功能拆分出一个公共组件,方便使用。
大致样式如下图:
这里我使用的是ng-zorro蚂蚁金服的angular组件库
index.html:
<div nz-form class="ant-advanced-search-form"> <nz-row [nzGutter]="24"> <nz-col [nzSpan]="8" *ngFor="let item of columns, let i=index" [style.display]="(i>2 && !expandForm) "> <nz-form-item nzFlex> <nz-form-label style="min-width: 20%;">{{item.label}}</nz-form-label> <nz-form-control> <input nz-input [(ngModel)]="searchData[item.key]" placeholder="请输入" *ngIf="item.type === 'input'"> <nz-select [(ngModel)]="searchData[item.key]" nzPlaceHolder="请选择" *ngIf="item.type === 'select'"> <nz-option *ngFor="let son of item.data; let idx = index" [nzLabel]="son.label" [nzValue]="son.value"></nz-option> </nz-select> <nz-select [(ngModel)]="searchData[item.key]" nzPlaceHolder="请选择" *ngIf="item.type === 'gender'"> <nz-option nzLabel="女" nzValue=0></nz-option> <nz-option nzLabel="男" nzValue=1></nz-option> </nz-select> <nz-select [(ngModel)]="searchData[item.key]" nzPlaceHolder="请输入" *ngIf="item.type === 'operator'" nzAllowClear nzShowSearch [nzServerSearch]="true" (nzOnSearch)="onSearch($event)" (ngModelChange)="changeOption($event)"> <ng-container *ngFor="let opt of operatorOptions"> <nz-option [nzValue]="opt" [nzLabel]="opt.name + '-'+ opt.user_type"></nz-option> </ng-container> </nz-select> <nz-select [(ngModel)]="searchData[item.key]" nzPlaceHolder="请输入" *ngIf="item.type === 'merchant'" nzAllowClear nzShowSearch [nzServerSearch]="true" (nzOnSearch)="onSearch_merchant($event)"> <ng-container *ngFor="let opt of merchantOptions"> <nz-option [nzValue]="opt.id" [nzLabel]="opt.name"></nz-option> </ng-container> </nz-select> <nz-select [(ngModel)]="searchData[item.key]" nzPlaceHolder="请输入" *ngIf="item.type === 'client'" nzAllowClear nzShowSearch [nzServerSearch]="true" (nzOnSearch)="onSearch_client($event)"> <ng-container *ngFor="let opt of clientOptions"> <nz-option [nzValue]="opt.id" [nzLabel]="opt.name"></nz-option> </ng-container> </nz-select> <nz-select [(ngModel)]="searchData[item.key]" nzPlaceHolder="请输入" *ngIf="item.type === 'admin'" nzAllowClear nzShowSearch [nzServerSearch]="true" (nzOnSearch)="onSearch_admin($event)"> <ng-container *ngFor="let opt of adminOptions"> <nz-option [nzValue]="opt.id" [nzLabel]="opt.name"></nz-option> </ng-container> </nz-select> <nz-date-picker *ngIf="item.type === 'date'" [(ngModel)]="searchData[item.key]"></nz-date-picker> </nz-form-control> </nz-form-item> </nz-col> <nz-col [nzSpan]="8" style="text-align: left;" [hidden]="filterLength >= 3"> <button nz-button type="submit" nzType="primary" [nzLoading]="loading" (click)="submit()">查询</button> <button nz-button type="reset" (click)="resetData()" class="mx-sm">重置</button> </nz-col> </nz-row> <nz-row [hidden]="filterLength < 3"> <nz-col [nzSpan]="24" style="text-align: right;"> <button nz-button type="submit" nzType="primary" [nzLoading]="loading" (click)="submit()">查询</button> <button nz-button type="reset" (click)="resetData()" class="mx-sm">重置</button> <a (click)="expandForm = !expandForm" *ngIf="filterLength > 3"> {{expandForm "anticon" [class.anticon-down]="!expandForm" [class.anticon-up]="expandForm"></i> </a> </nz-col> </nz-row> </div>
index.ts:
import { OnInit, Input, Output, Component, EventEmitter } from '@angular/core'; import { _HttpClient } from '@delon/theme'; @Component({ selector: 'search-filter', templateUrl: './index.html', styleUrls: ['./index.less'] }) export class SearchFilterComponent implements OnInit { @Input() columns; @Input() loading; @Output() toSearch = new EventEmitter<Object>(); constructor( private httpClient: _HttpClient, ) { } searchData: any = { page: 1, limit: 15 }; filterLength = 0; operatorOptions = []; merchantOptions = []; clientOptions = []; adminOptions = []; ngOnInit() { this.columns.forEach(el => { if (el.type == 'operator') { this.searchData['user_id'] = ''; this.searchData['el.user_type'] = ''; this.onSearch('') } if (el.type == 'merchant') { this.onSearch_merchant('') } if (el.type == 'client') { this.onSearch_client('') } if (el.type == 'admin') { this.onSearch_admin('') } this.searchData[el.key] = ""; this.filterLength++; }) } // 清空搜索条件 resetData() { for (const i in this.searchData) { if (this.searchData[i]) { this.searchData[i] = ''; } } this.searchData.page = 1; this.searchData.limit = 15; this.submit(); } // 搜索按钮事件 submit() { if (this.searchData.operator) { delete this.searchData.operator; } if (this.searchData.start_at) { this.searchData.start_at = this.format(this.searchData.start_at) } if (this.searchData.end_at) { this.searchData.end_at = this.format(this.searchData.end_at) } this.toSearch.emit(this.searchData); } // 日志操作人搜索 onSearch(value: string) { this.httpClient.get('/api/admin/member"htmlcode">:host { display: block; width: 95%; margin: 0 auto; ::ng-deep { nz-form-control { min-width: 60%; } nz-select { width: 100%; } .ant-calendar-picker { width: 100%; } } }其中有个特殊的地方,是根据用户输入的关键字,先模糊搜索用户名和用户类型,再根据用户选择的用户id去进行筛选。
更多关于AngularJS相关内容感兴趣的读者可查看本站专题:《AngularJS指令操作技巧总结》、《AngularJS入门与进阶教程》及《AngularJS MVC架构总结》
希望本文所述对大家AngularJS程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】