0

選択した false に基づいてその要素のみをフィルタリングするように、要素の配列用に角度のある 2 パイプを作成しようとしています。

私の配列

this.states =  [ {name: 'John', selected: false, value: 1}, {name: 'Bill', selected: false, value: 2},
    {name: 'Smith', selected: false, value: 3}, {name: 'Alex', selected: false, value: 4},
    {name: 'Martin', selected: false, value: 5}, {name: 'James', selectes: false, value: 6}];

選択されたfalseの値をフィルタリングする必要があります。

私のパイプコード

import {Injectable,Pipe} from 'angular2/core';

@Pipe ({
name : 'restrictValues'
})
@Injectable()
export class restrictValues implements PipeTransform {
    transform(items: any[], args: any[]): any {
        return items.filter(item => item.id.indexOf(args[1]) !== true);
    }
}

私の HTML 実装

  <select ngControl="select_state" (change)="statechange()" #select_state="ngForm" class="form-control btn btn-primary">
    <option *ngFor="#statez of states | restrictValues : false" value="{{statez.value}}">
        {{statez.name}}
    </option>
  </select>

パイプが期待どおりに機能しない場合は、コードに問題がある場合は修正してください

4

3 に答える 3

2
@Pipe({
    name:'restrictValues'
})
@Injectable()
export class restrictValues implements PipeTransform {
    transform(items: any[], args: any[]): any {
        return items.filter(item => item.selected === false);
    }
}

selectedコード サンプルがオブジェクトのプロパティを実際に見ていないことに注意してくださいid

于 2016-07-04T06:05:25.383 に答える
1

パイプを不純にする必要があるかもしれません

@Pipe ({
  name : 'restrictValues',
  pure: false
})

そうしないと、アイテムが で追加/削除/変更されたときに呼び出されませんstates

これにより、変更検出サイクルごとにパイプが実行されます。変更について積極的に通知するオブザーバブルを使用することを検討してください。

また、新しいAngular2バージョン(〜RC.1以降)では、オプションのパラメーターは配列として渡されなくなりました

transform(items: any[], args: any[]): any {

する必要があります

transform(items: any[], param1?:any, param2?:any): any {

サポートするパラメーターの数に応じて

于 2016-07-04T06:07:25.183 に答える
0
import {Injectable,Pipe} from 'angular2/core';

@Pipe ({
name : 'restrictValues'
})
@Injectable()
export class restrictValues implements PipeTransform {
    transform(items: any[], args: any[]): any {
        return items.filter(item => !item.selected);
    }
}
于 2016-07-04T06:11:49.307 に答える