この要件のために、汎用コンポーネントを実装して公開します。見る
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>
ツリーフィールドでのフィルタリング-レベル2のフィールド 'Valor'またはレベル1の 'Valor'またはレベル0の 'Nome'
<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の「Valor」
<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)" ...