Anuglar2管道 - 使用组件

时间:2016-09-16 20:39:39

标签: angular angular2-pipe

我无法通过管道访问我的Component中的属性。

继承我的烟斗:

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

继承我尝试过滤的数组,也在我的Component中:

  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返回我的数组中的所有对象。 item.equip_type === "dagger"item.equip_type === "katana"部分在我的IF语句中有效,但args[0].dagger == true&& args[0].katana == true似乎不起作用。无法弄清楚我做错了什么。我已经尝试'unit'有和没有引号,没有运气。

1 个答案:

答案 0 :(得分:0)

您正在为管道指定一个字符串arg unitEquipment: unit

应为args.dagger

在你的管道内部,只需像myInt = 10一样使用它。