2016-09-16 4 views
0

내 파이프를 통해 내 구성 요소의 속성에 액세스하는 데 문제가 있습니다. 를 heresAnuglar2 파이프 - 구성 요소의 속성을 사용하여 필터링

내 파이프 :

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

@Pipe({ 
    name: 'unitEquipment' 
}) 
export class UnitEquipmentPipe implements PipeTransform { 

    transform(value: any, args?: any): any { 
    if (value == null) { 
     return null; 
    } 
    let resultArray = []; 
    for (let item of value) { 
     if(item.equip_type === "dagger" && args[0].dagger == true){ 
     resultArray.push(item); 
     } 
     if(item.equip_type === "katana" && args[0].katana == true){ 
     resultArray.push(item); 
     } 
    } 
    return resultArray; 
    } 

} 

을 Heres 내가 내 필터를 사용할 때 나는 HTML에 액세스하려고 해요 내 구성 요소에서 개체 : Heres는 배열 내가

unit = { 
    "dagger": true, 
    "sword": false, 
    "great_sword": false, 
    "katana": true 
    }; 

을 시도하고를

rhandequip = [ 
    { 
     "name": "Hidden Truth", 
     "equip_name": "hidden-truth", 
     "equip_type": "great_sword" 
    }, 
    { 
     "name": "Mursama", 
     "equip_name": "mursama", 
     "equip_type": "katana" 
    }, 
    { 
     "name": "Battle Dagger", 
     "equip_name": "battle-dagger", 
     "equip_type": "dagger" 
    }, 
    { 
     "name": "Boomer", 
     "equip_name": "boomer", 
     "equip_type": "sword" 
    }, 
    { 
     "name": "Broadsword", 
     "equip_name": "broadsword", 
     "equip_type": "sword" 
    }, 
    { 
     "name": "Bronze Knife", 
     "equip_name": "bronze-knife", 
     "equip_type": "dagger" 
    } 
    ] 

그리고 마지막으로 HTML : 또한 내 구성 요소의 내부 필터링하는

<select class="form-control" [(ngModel)]="rHandSelect" name="emptyRightHand" #righthand (input)="getRHand(righthand.value)"> 
    <option value="Empty">Empty</option> 
    <option *ngFor="let rhand of rhandequip | unitEquipment: 'unit'" value="{{rhand.equip_name}}">{{rhand.name}} &#x25B6; {{rhand.info}}</option> 
    </select> 

기본적으로 유닛을 선택할 때 유닛이 true로 나열된 equip_type을 사용하여 배열의 모든 객체를 반환하려고합니다. 내 과 && args[0].katana == true은 작동하지 않는 것 같습니다. 내가 뭘 잘못하고 있는지 알 수 없다. 나는 'unit'을 따옴표와 함께 사용해 보았습니다. 운이 없었습니다.

답변

0

당신은 파이프에 문자열을 arg unitEquipment: 'unit'으로 지정하고 있습니다.

unitEquipment: unit이어야합니다.

파이프 내부에는 args.dagger처럼 사용하십시오.

+0

감사합니다. 내 앱이 지금 작동합니다. :) – Sal

관련 문제