[解決済み] ngForにフィルターをかけるには?
2022-02-03 09:22:18
質問
どうやらAngular2では、ng-forと連携して結果をフィルタリングするために、Angular1のようにフィルタではなくパイプを使うようです。しかし、まだ実装が曖昧で、明確なドキュメントがないようです。
つまり、私が実現しようとしていることは、次のような観点で見ることができます。
<div *ng-for="#item of itemsList" *ng-if="conditon(item)"></div>
パイプを使ってどのように実装するか?
どのように解決するのですか?
基本的には、パイプを書き、それを
*ngFor
ディレクティブを使用します。
コンポーネントで
filterargs = {title: 'hello'};
items = [{title: 'hello world'}, {title: 'hello kitty'}, {title: 'foo bar'}];
テンプレートでは、文字列、数値、またはオブジェクトをパイプに渡して、フィルタリングに使用することができます。
<li *ngFor="let item of items | myfilter:filterargs">
あなたのパイプの中に
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'myfilter',
pure: false
})
export class MyFilterPipe implements PipeTransform {
transform(items: any[], filter: Object): any {
if (!items || !filter) {
return items;
}
// filter items array, items which match and return true will be
// kept, false will be filtered out
return items.filter(item => item.title.indexOf(filter.title) !== -1);
}
}
でパイプを登録することを忘れないでください。
app.module.ts
にパイプを登録する必要はありません。
@Component
import { MyFilterPipe } from './shared/pipes/my-filter.pipe';
@NgModule({
imports: [
..
],
declarations: [
MyFilterPipe,
],
providers: [
..
],
bootstrap: [AppComponent]
})
export class AppModule { }
プランカーはこちら カスタムフィルタパイプと組み込みのスライスパイプを使って結果を制限するデモを行います。
なお、(何人かのコメンテーターが指摘しているように)、このような 訳あり Angularに組み込みのフィルターパイプがない理由。
関連
-
[解決済み] Angular 4: コンポーネントファクトリが見つかりません。@NgModule.entryComponents に追加しましたか?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] NGIf else "の使い方を教えてください。
-
[解決済み] インデックスを属性値とするngFor
-
[解決済み] コンポーネントテンプレートで要素を選択するには?
-
[解決済み] オブジェクトのキーと値に*ngForでアクセスする
-
[解決済み] Angular 2の "select "で新しい選択範囲を取得するにはどうすればよいですか?
-
[解決済み] 例外が発生しました。既知のネイティブプロパティではないため、'ngFor'にバインドできない
-
[解決済み】*ngIfと*ngForが同じ要素にあるとエラーになる件
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】VSCodeはモジュール'@angular/core'や他のモジュールを見つけることができません。
-
[解決済み】ERR_INVALID_HTTP_RESPONSEをAngular 7とASP.Net Core 2.2を使ってGoogle Chromeブラウザーで使用する場合
-
[解決済み】angularでpreflightのレスポンスがHTTP okステータスにならない。
-
[解決済み] FormBuilder のプロバイダがない [重複] 。
-
[解決済み] updateValueAndValidityとは?
-
[解決済み] typescriptを使用して、同じhtml DOM要素で「シングルクリック」と「ダブルクリック」を処理する方法:Angular 2または4?
-
[解決済み] ag-gridで「表示する行がありません」テキストをプログラムで変更するにはどうすればよいですか?
-
[解決済み] Angular2: [(ngModel)] with [ngModelOptions]="{standalone: true}"を使って、モデルのプロパティへの参照にリンクさせる。
-
[解決済み] Angularアプリのシンタックスエラー。予期しないトークン <
-
[解決済み] Angular 4 - "BrowserAnimationsModule "または "NoopAnimationsModule "のいずれかをアプリケーションに組み込んでください。