国产探花免费观看_亚洲丰满少妇自慰呻吟_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>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 石楼县| 江北区| 炎陵县| 呼和浩特市| 句容市| 黄陵县| 博兴县| 修武县| 安平县| 义马市| 兴仁县| 武清区| 西和县| 天气| 白山市| 昂仁县| 东丽区| 南宁市| 丰顺县| 南乐县| 冀州市| 盐城市| 广平县| 化州市| 崇州市| 大同市| 高唐县| 娄底市| 康平县| 文昌市| 金阳县| 金湖县| 海安县| 柳林县| 浦江县| 合作市| 旌德县| 和静县| 应城市| 三都| 遵义县|