Ionic 3 2 * ngForにネストされた配列をフィルタリングする方法は?

ヴァーソン

day.children name検索入力に基づいてプロパティをフィルタリングしたいと思います。1つは秒に依存しているため、ネストされた* ngForに問題があります。dayOverViewByGroupAPIから来ています。day.childrenような関数でラップしようとしましたfilterIt(day.children)が、無限ループになりました。ありがとうございました。

私は次の(簡略化された)html構造を持っています

<ion-searchbar placeholder="Suchen..." (ionInput)="searchChildren($event)" padding></ion-searchbar>
<ion-grid *ngFor="let day of dayOverViewByGroup; let i = index" padding>
  <ion-card *ngFor="let child of day.children; let j = index">
  <h1>{{child.name}}</h1>
</ion-grid>

APIからのdayOverview変数のサンプルデータ

// dayOverview variable example data from API

[
  {
    "name": "Kindergarden 1",
    "presence_id": 25,
    "totalChildren": 3,
    "totalCheckinChildren": 1,
    "children": [
      {
        "name": "John Doe",
        "daycareComment": null,
        "parentComment": null,
        "id": "10633",
        "away": null,
        "checkin": [],
        "additionalDay": false,
        "remarks": "",
        "awayClass": "",
        "reason": "",
        "addtionalClass": "",
        "disableToggle": false,
        "disabled": false,
        "checkout": "Nicht anwesend",
        "class": "notcheckin"
      },
      {
        "name": "Jane Doe",
        "daycareComment": null,
        "parentComment": null,
        "id": "8322",
        "away": null,
        "checkin": [],
        "additionalDay": false,
        "remarks": "",
        "awayClass": "",
        "reason": "",
        "addtionalClass": "",
        "disableToggle": false,
        "disabled": false,
        "checkout": "Nicht anwesend",
        "class": "notcheckin"
      },
      {
        "name": "Bastian Paper",
        "daycareComment": null,
        "parentComment": null,
        "id": "86999",
        "away": null,
        "checkin": [],
        "additionalDay": false,
        "remarks": "",
        "awayClass": "",
        "reason": "",
        "addtionalClass": "",
        "disableToggle": false,
        "disabled": true,
        "class": "checkin",
        "checkout": "Anwesend"
      }
    ]
  },
  {
    "name": "Kindergarden 2",
    "presence_id": 26,
    "totalChildren": 1,
    "totalCheckinChildren": 0,
    "children": [
      {
        "name": "Thomas Mueller",
        "daycareComment": null,
        "parentComment": null,
        "id": "86900",
        "away": null,
        "checkin": [],
        "additionalDay": false,
        "remarks": "",
        "awayClass": "",
        "reason": "",
        "addtionalClass": "",
        "disableToggle": false,
        "disabled": false,
        "checkout": "Nicht anwesend",
        "class": "notcheckin"
      }
    ]
  },
  {
    "name": "Kindergarden 3",
    "presence_id": 27,
    "totalChildren": 1,
    "totalCheckinChildren": 0,
    "children": [

    ]
  }
]

fridoo

filteredChildren$フィルタリングされた子をdayオブジェクトに放出するObservable追加します

作成filteredChildren$するには、フィルター値のObservableが必要です。FormControlを検索バーに追加して、値の変化を聞くことができるようにします。(インポートする必要がありますReactiveFormsModule

デモ(Angular 8、Ionic 4、RxJS 6)

デモ(Angular 5、Ionic 3、RxJS 5.5)

<ion-searchbar placeholder="Suchen..." [formControl]="filterControl" padding></ion-searchbar>
<ion-grid *ngFor="let day of dayOverViewByGroup$ | async; let i = index" padding>       
  <ion-card *ngFor="let child of day.filteredChildren$ | async; let j = index">
    <h1>{{child.name}}</h1>
  </ion-card>
</ion-grid>
export class Component {
  filterControl = new FormControl();
  dayOverViewByGroup$: Observable<any>

  ngOnInit() {
    const filter$: Observable<string> = this.filterControl.valueChanges.pipe(
      startWith(''),
      debounceTime(100), 
      distinctUntilChanged(),
      share() // we use filter$ multiple times so we share a single subscription to the source
    );
    this.dayOverViewByGroup$ = this.fetchData().pipe(
      map(days => days.map(day => (
        {
          ...day,
          // add an Observable that emits an array of filtered children
          filteredChildren$: filter$.pipe(this.filterFrom(day.children))
        }
      )))
    );
  }

  fetchData(): Observable<any[]> {
    // fetch data from Api
    return of(data);
  }

  filterFrom(children: { name: string }[]) {
    return (filter$: Observable<string>) => filter$.pipe(
      // the filter logic (add your own here)
      map(f => children.filter(child => child.name.toLowerCase().indexOf(f.toLowerCase()) > -1))
    );
  }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

インストールされているioniccordovaプラグインをionic2 / 3またはionicV2 +プロジェクトから削除する方法

分類Dev

ionic / ionic 2 / ionic 3 / ionic 4 / ionic 5でローカルコルドバプラグインを追加するにはどうすればよいですか?

分類Dev

Ionic3をフィルタリングする配列アイテム

分類Dev

Ionic3-ユーザーが並べ替えた配列からリストをフィルタリングする

分類Dev

NumPyを使用して、2D配列のセット(3D配列)をベクトル化された方法で2D配列でスケーリングするにはどうすればよいですか?

分類Dev

NumPyを使用して、2D配列のセット(3D配列)をベクトル化された方法で2D配列でスケーリングするにはどうすればよいですか?

分類Dev

Ionic2で画像CSS3フィルターを適用する方法

分類Dev

Ionic2 / 3の動的タブバー

分類Dev

Ionic2 / 3可変アクセス

分類Dev

同じマシンにIonic2と3をインストールする

分類Dev

ionic3-ネストされたJSONから配列にデータを抽出します

分類Dev

Ionic 2 * ngForループインデックス3の場合

分類Dev

Ionic 2 / Ionic 3:デバイスの現在位置を取得する方法

分類Dev

Ionic2-イオンリストにフィルターを適用する

分類Dev

2Dnumpy配列に従って3Dnumpy配列をフィルタリングする

分類Dev

Ionic2または3アプリで実際の画像が読み込まれる前にプレースホルダー画像を表示する方法

分類Dev

2Dネストされた配列を2D配列シングルに変換する方法は?

分類Dev

Angularfire2-Ionic 2で複数のFirebaseListObservableをフィルタリングする方法は?

分類Dev

Angular 2 and Ionic 3 - TypeError: (...) is not a function

分類Dev

Angularfire2 Ionic3

分類Dev

フィルタリングされた配列(オブジェクト)を印刷するionic4 / angular

分類Dev

フィルタリングされた配列(オブジェクト)を印刷するionic4 / angular

分類Dev

Ionic2-autosize で Ionic 3 ディレクティブが機能しない

分類Dev

Ionic2をIonic3に変換:「エラー:「ionicbuildiOS」で「プログラムのトランスパイルに失敗しました」

分類Dev

配列プロパティ(Ionic 2 HTTPプラグイン)を使用してPOSTリクエストを送信する方法は?

分類Dev

ネストされたforループを回避するオブジェクトの2つの配列間でフィルタリング

分類Dev

Ionic 3(Cordova、Ionic 3、Angular 5)のストレージから* ngForディレクティブを使用してデータをフェッチする方法

分類Dev

Ionic2 CLIをIonic3に更新した後、Facebookプラグインが原因でCordovaビルドが失敗する

分類Dev

Javascriptを使用してネストされたオブジェクトで2つの配列をフィルタリングする

Related 関連記事

  1. 1

    インストールされているioniccordovaプラグインをionic2 / 3またはionicV2 +プロジェクトから削除する方法

  2. 2

    ionic / ionic 2 / ionic 3 / ionic 4 / ionic 5でローカルコルドバプラグインを追加するにはどうすればよいですか?

  3. 3

    Ionic3をフィルタリングする配列アイテム

  4. 4

    Ionic3-ユーザーが並べ替えた配列からリストをフィルタリングする

  5. 5

    NumPyを使用して、2D配列のセット(3D配列)をベクトル化された方法で2D配列でスケーリングするにはどうすればよいですか?

  6. 6

    NumPyを使用して、2D配列のセット(3D配列)をベクトル化された方法で2D配列でスケーリングするにはどうすればよいですか?

  7. 7

    Ionic2で画像CSS3フィルターを適用する方法

  8. 8

    Ionic2 / 3の動的タブバー

  9. 9

    Ionic2 / 3可変アクセス

  10. 10

    同じマシンにIonic2と3をインストールする

  11. 11

    ionic3-ネストされたJSONから配列にデータを抽出します

  12. 12

    Ionic 2 * ngForループインデックス3の場合

  13. 13

    Ionic 2 / Ionic 3:デバイスの現在位置を取得する方法

  14. 14

    Ionic2-イオンリストにフィルターを適用する

  15. 15

    2Dnumpy配列に従って3Dnumpy配列をフィルタリングする

  16. 16

    Ionic2または3アプリで実際の画像が読み込まれる前にプレースホルダー画像を表示する方法

  17. 17

    2Dネストされた配列を2D配列シングルに変換する方法は?

  18. 18

    Angularfire2-Ionic 2で複数のFirebaseListObservableをフィルタリングする方法は?

  19. 19

    Angular 2 and Ionic 3 - TypeError: (...) is not a function

  20. 20

    Angularfire2 Ionic3

  21. 21

    フィルタリングされた配列(オブジェクト)を印刷するionic4 / angular

  22. 22

    フィルタリングされた配列(オブジェクト)を印刷するionic4 / angular

  23. 23

    Ionic2-autosize で Ionic 3 ディレクティブが機能しない

  24. 24

    Ionic2をIonic3に変換:「エラー:「ionicbuildiOS」で「プログラムのトランスパイルに失敗しました」

  25. 25

    配列プロパティ(Ionic 2 HTTPプラグイン)を使用してPOSTリクエストを送信する方法は?

  26. 26

    ネストされたforループを回避するオブジェクトの2つの配列間でフィルタリング

  27. 27

    Ionic 3(Cordova、Ionic 3、Angular 5)のストレージから* ngForディレクティブを使用してデータをフェッチする方法

  28. 28

    Ionic2 CLIをIonic3に更新した後、Facebookプラグインが原因でCordovaビルドが失敗する

  29. 29

    Javascriptを使用してネストされたオブジェクトで2つの配列をフィルタリングする

ホットタグ

アーカイブ