สำหรับความต้องการนี้ผมใช้และเผยแพร่องค์ประกอบทั่วไป ดู
https://www.npmjs.com/package/w-ng5
สำหรับการใช้คอมโพเนนต์นี้ก่อนติดตั้งแพ็กเกจนี้ด้วย npm:
npm install w-ng5 --save
หลังจากนั้นให้นำเข้าโมดูลใน app.module
...
import { PipesModule } from 'w-ng5';
ในขั้นตอนถัดไปเพิ่มในประกาศส่วนของ app.module:
imports: [
PipesModule,
...
]
ตัวอย่างการใช้
การกรองสตริงแบบง่าย
<input type="text" [(ngModel)]="filtroString">
<ul>
<li *ngFor="let s of getStrings() | filter:filtroString">
{{s}}
</li>
</ul>
การกรองสตริงที่ซับซ้อน - ฟิลด์ 'ค่า' ในระดับ 2
<input type="text" [(ngModel)]="search">
<ul>
<li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'n1.n2.valor2', value: search}]">
{{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}}
</li>
</ul>
การกรองสตริงที่ซับซ้อน - ฟิลด์ตรงกลาง - 'ค่า' ในระดับ 1
<input type="text" [(ngModel)]="search3">
<ul>
<li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'n1.valor1', value: search3}]">
{{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}}
</li>
</ul>
การกรองอาร์เรย์ที่ซับซ้อนอย่างง่าย - ฟิลด์ 'Nome' ระดับ 0
<input type="text" [(ngModel)]="search2">
<ul>
<li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'nome', value: search2}]">
{{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}}
</li>
</ul>
การกรองในฟิลด์ต้นไม้ - ฟิลด์ 'Valor' ในระดับ 2 หรือ 'Valor' ในระดับ 1 หรือ 'Nome' ในระดับ 0
<input type="text" [(ngModel)]="search5">
<ul>
<li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'n1.n2.valor2', value: search5}, {field:'n1.valor1', value: search5}, {field:'nome', value: search5}]">
{{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}}
</li>
</ul>
การกรองฟิลด์ที่ไม่มีอยู่ - 'ความกล้าหาญ' ในระดับที่ไม่มีอยู่ 3
<input type="text" [(ngModel)]="search4">
<ul>
<li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'n1.n2.n3.valor3', value: search4}]">
{{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}}
</li>
</ul>
ส่วนนี้ทำงานร่วมกับระดับคุณลักษณะที่ไม่มีที่สิ้นสุด ...
<div *ngFor="let item of itemsList" *ngIf="conditon(item)" ...