国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Angular6 Filter實現頁面搜索的示例代碼

2024-05-06 15:27:38
字體:
來源:轉載
供稿:網友

前言

我們在開發過程中經常會遇到在頁面上實現全局搜索的需求,例如:表格搜索,通過關鍵詞檢索整個表格,過濾出我們需要的數據。在Angular6 中我們可以通過Filter + Pipe 的方式來實現這個功能。下面我們看一下實現代碼。

經人提醒,代碼排版太亂。后續考慮將一個完整版的demo放到GitHub上,敬請期待。

實現代碼

第一步

新建一個名為 filter.pipe.ts 的文件,這部分是實現的核心代碼:

import { Pipe, PipeTransform } from '@angular/core';@Pipe({ name: 'globalFilter'})export class GlobalFilterPipe implements PipeTransform { transform(items: any, filter: any, defaultFilter: boolean): any { if (!filter){ return items; } if (!Array.isArray(items)){ return items; } if (filter && Array.isArray(items)) { let filterKeys = Object.keys(filter); if (defaultFilter) { return items.filter(item =>  filterKeys.reduce((x, keyName) =>  (x && new RegExp(filter[keyName], 'gmi').test(item[keyName])) || filter[keyName] == "", true)); } else { return items.filter(item => {  return filterKeys.some((keyName) => {  return new RegExp(filter[keyName], 'gmi').test(item[keyName]) || filter[keyName] == "";  }); }); } } }}

代碼部分的正則表達式可以根據需要替換,這里是全局匹配。

第二步

在app.module.ts 文件中導入。

import { GlobalFilterPipe } from './shared/filter.pipe';registerLocaleData(zh);@NgModule({ declarations: [ GlobalFilterPipe, ]

第三步

在需要的html 文件中應用,在 componet 中定義一個搜索框的變量。

<nz-input-group nzSearch nzSize="large" [nzSuffix]="suffixButton"> <input type="text" [(ngModel)]="searchText" nz-input placeholder="input search text"></nz-input-group><ng-template #suffixButton> <button nz-button nzType="primary" nzSize="large" nzSearch>Search</button></ng-template><br><br><nz-card *ngFor="let topData of topCategoriesData" nzTitle="{{topData.categoryName}}"> <div nz-card-grid [ngStyle]="gridStyle" *ngFor="let secondData of topData.subCategories | globalFilter: {categoryName: searchText,categoryCode: searchText}" >  <nz-collapse> <nz-collapse-panel [nzHeader]="secondData.categoryName+'('+secondData.categoryCode+')'" [nzActive]="false" [nzDisabled]="false"> <nz-select style="width: 100%;" (nzOpenChange)="loadMore(secondData.categoryId)" nzPlaceHolder="請選擇..." nzAllowClear>  <nz-option *ngFor="let thirdData of thirdCategoriesData | globalFilter: {categoryName: searchText,categoryCode: searchText}" [nzValue]="thirdData.categoryId" [nzLabel]="thirdData.categoryName+'('+thirdData.categoryCode+')'"></nz-option>  <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>  <i nz-icon type="loading" class="loading-icon"></i> Loading Data...  </nz-option> </nz-select> </nz-collapse-panel> </nz-collapse> <!-- <a>{{secondData.categoryName}}</a><b>({{secondData.categoryCode}})</b> --> </div> <ng-template #extraTemplate> <a>二級分類數量:{{data.subCategories.length}}</a> </ng-template></nz-card>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 来凤县| 万盛区| 油尖旺区| 黄龙县| 台州市| 博兴县| 军事| 昂仁县| 通州区| 新田县| 正镶白旗| 玉田县| 宜春市| 惠安县| 随州市| 哈巴河县| 襄垣县| 清徐县| 永顺县| 广宁县| 台北县| 长岛县| 芷江| 视频| 东海县| 日喀则市| 日照市| 中江县| 通道| 营口市| 交口县| 襄垣县| 海兴县| 麦盖提县| 陆良县| 广州市| 晋城| 天等县| 忻州市| 兴宁市| 溆浦县|