チェックボックスの角度4パイプが正しく機能しない

Akshay

こんにちは私は角度に不慣れで、製品データをフィルタリングするためにアニュラーチェックボックスフィルターパイプを作成しようとしています!ここで、.tsファイルにチェックボックスの色を作成しました(これに関係のないコードは含めていません)問題)

public colors: any[] = [
{
  id: 1,
  color: "Black",
  selected: true,
},
{
  id: 2,
  color: "Green",
  selected: true,
}
]

チェックボックスにパイプを使用しています-

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
  name: 'selectBrand'
})
export class SelectBrandPipe implements PipeTransform {
    transform(check: any, checked?: any): any {
        console.log('checked', checked);
        return checked ? check.filter(sal => sal.type === checked) : check;
    }
}

私のHTMLファイルで-

<form>
    <div class="form-check brand-checkbox" *ngFor="let col of colors">
      <input class="form-check-input" 
             type="checkbox" 
             value="{{col.id}}" 
             id="{{col.id}}" 
             name="" 
             [(ngModel)]="col.selected">

      <label class="form-check-label" for="{{col.id}}">
        {{col.productColor}}
      </label>
    </div>
</form>

<div class="shop" *ngFor="let prod of productListShow">
    <div class="col-md-4" *ngFor="let product of prod.product | selectBrand: colors">
            <h5>{{product.productName}}</h5>
    </div>
</div>

サービスから製品データを取得しています-

{
    id: 1,
    productName:'Products',
    product: [
        {
            productId: 1,
            productName: 'Shirt 1',
            productColor: 'Green',
        },
        {
            productId: 2,
            productName: 'Shirt 2',
            productColor: 'Black',
        },
    ],
},

コードが実行されると、すべてのチェックボックスが選択され、製品が表示されず、コンソールログに表示されません。私は得ています-

checked 
(2) [{…}, {…}]
0
:
{id: 1, productColor: "Black", selected: true}
1
:
{id: 2, productColor: "Green", selected: true}
length
:
2
__proto__
:
Array(0)
A.勝つ

製品の配列をチェックとして渡し、配列をチェックとしてpipeTransform関数に渡します。次に、product.type(製品モデルの定義によれば存在しない)がcolorsArrayと等しいかどうかを確認します。これはあなたがチェックしたいものではないと思います。

試してみてください:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
    name: 'selectBrand',
    pure: false
})
export class SelectBrandPipe implements PipeTransform {
transform(products: any[], colors: any[]): any {

    const activeColors = colors.filter(c => c.selected).map(c => c.color)
    console.log('checked colors', activeColors.join(","));
    return products.filter(p => activeColors.includes(p.productColor));
    }
}

ところで:本当にフィルタリングにパイプを使用したい場合は、パフォーマンス上の理由から推奨されない不純なパイプが必要です。

ユーザーがチェックボックスの入力要素に(ngModelChange)を追加してチェックボックスのステータスを変更した場合にのみ、製品をフィルタリングすることをお勧めします。例:

<input class="form-check-input" 
             type="checkbox" 
             value="{{col.id}}" 
             id="{{col.id}}" 
             name="" 
             [(ngModel)]="col.selected"
             (ngModelChange)="filterProducts()">

コンポーネントtypescriptに、フィルタリングを行う関数filterProductsを追加します。

  public filterProducts(): void {
    const filteredProductArray = new Array<any>();
    const activeColors = this.colors.filter(c => c.selected).map(c => c.color);
    this.productListShow.forEach(prod => {
        const filteredSubProducts = prod.product.filter(p => activeColors.includes(p.productColor));
         if(filteredSubProducts.length > 0){
             const clonedProduct = Object.assign({}, prod);
             clonedProduct.product = filteredSubProducts;
             filteredProductArray.push(clonedProduct);
         }
    });
    this.filteredProducts = filteredProductArray;
}

次に、productListShowの代わりにngForでfilteredProductsを使用します

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

チェックボックスで角度バインディングが正しく機能しない(webkit)

分類Dev

チェックボックスで角度バインディングが正しく機能しない(webkit)

分類Dev

チェックボックスの.change()が正しく機能しない

分類Dev

Bootstrap4-BootstrapModalのPopover内でチェックボックスが正しく機能しない

分類Dev

アダプターのAndroid変更チェックボックスが正しく機能しない

分類Dev

AngularJSチェックボックスが正しく機能しない

分類Dev

「チェックボックス」が正しく機能しない

分類Dev

チェックボックスのチェック済みプロパティが機能しない

分類Dev

チェックボックスのツリービューが正しく機能しない

分類Dev

ページの読み込み時にチェックボックスが正しく機能しない

分類Dev

Angular 2:チェックボックスのある配列が正しく機能しない

分類Dev

JQuery:チェックボックスチェーンが正しく機能しない

分類Dev

ngxブートストラップアコーディオンヘッダー内のチェックボックスが正しく機能しない

分類Dev

角度チェックボックスリストが機能しない

分類Dev

チェックボックスの背景が機能しない

分類Dev

ng-readonlyが角度チェックボックスで機能しない

分類Dev

CSSチェックボックスのスタイルが機能しない

分類Dev

カスタムチェックボックスが正しく機能しない

分類Dev

IE のフォーム内でチェックボックスの画像スタイルが正しく機能しない

分類Dev

チェックボックスノックアウトクリックバインディングが正しく機能しない

分類Dev

正しく機能するチェックボックスのグループ

分類Dev

ng-チェックボックスの角度が機能しないことを確認しました

分類Dev

JavaScriptチェックボックスのドロップダウンスタイルが機能しない

分類Dev

ngModelとチェックボックス/ラジオが正しく機能しない

分類Dev

AnuglarjSでチェックボックスタグが正しく機能しない

分類Dev

vueチェックボックスv-modelバインディングが現在のバージョンで正しく機能しない

分類Dev

チェックボックスの状態が正しく機能していません

分類Dev

イオンチェックボックスの「チェック済み」属性が機能しない

分類Dev

foreachループでのチェックボックス値のフェッチが機能しない

Related 関連記事

  1. 1

    チェックボックスで角度バインディングが正しく機能しない(webkit)

  2. 2

    チェックボックスで角度バインディングが正しく機能しない(webkit)

  3. 3

    チェックボックスの.change()が正しく機能しない

  4. 4

    Bootstrap4-BootstrapModalのPopover内でチェックボックスが正しく機能しない

  5. 5

    アダプターのAndroid変更チェックボックスが正しく機能しない

  6. 6

    AngularJSチェックボックスが正しく機能しない

  7. 7

    「チェックボックス」が正しく機能しない

  8. 8

    チェックボックスのチェック済みプロパティが機能しない

  9. 9

    チェックボックスのツリービューが正しく機能しない

  10. 10

    ページの読み込み時にチェックボックスが正しく機能しない

  11. 11

    Angular 2:チェックボックスのある配列が正しく機能しない

  12. 12

    JQuery:チェックボックスチェーンが正しく機能しない

  13. 13

    ngxブートストラップアコーディオンヘッダー内のチェックボックスが正しく機能しない

  14. 14

    角度チェックボックスリストが機能しない

  15. 15

    チェックボックスの背景が機能しない

  16. 16

    ng-readonlyが角度チェックボックスで機能しない

  17. 17

    CSSチェックボックスのスタイルが機能しない

  18. 18

    カスタムチェックボックスが正しく機能しない

  19. 19

    IE のフォーム内でチェックボックスの画像スタイルが正しく機能しない

  20. 20

    チェックボックスノックアウトクリックバインディングが正しく機能しない

  21. 21

    正しく機能するチェックボックスのグループ

  22. 22

    ng-チェックボックスの角度が機能しないことを確認しました

  23. 23

    JavaScriptチェックボックスのドロップダウンスタイルが機能しない

  24. 24

    ngModelとチェックボックス/ラジオが正しく機能しない

  25. 25

    AnuglarjSでチェックボックスタグが正しく機能しない

  26. 26

    vueチェックボックスv-modelバインディングが現在のバージョンで正しく機能しない

  27. 27

    チェックボックスの状態が正しく機能していません

  28. 28

    イオンチェックボックスの「チェック済み」属性が機能しない

  29. 29

    foreachループでのチェックボックス値のフェッチが機能しない

ホットタグ

アーカイブ