2016-09-16 22 views
0

我無法通過管道訪問組件中的屬性。Anuglar2管道 - 使用組件中的屬性進行過濾

繼承人我管:

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; 
    } 

} 

繼承人在我的組件對象我想在HTML訪問時,我用我的過濾器:

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> 

基本上,當我選擇一個單位時,我試着用equip_type返回數組中的所有對象,單位已列爲true。 item.equip_type === "dagger"item.equip_type === "katana"部分在我的IF語句中工作,但args[0].dagger == true&& args[0].katana == true似乎不起作用。無法弄清楚我做錯了什麼。我試過'unit'有和沒有引號,也沒有運氣。

回答

0

您正在給您的管道輸入字符串arg unitEquipment: 'unit'

它應該是unitEquipment: unit

而在你的管道內,就像這樣使用它args.dagger

+0

非常感謝!我的應用程序現在工作:)。 – Sal

相關問題